免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2236 | 回复: 4
打印 上一主题 下一主题

[网络] UNP上的 非阻塞connect Web客户程序,connect()函数出错!! [复制链接]

论坛徽章:
2
申猴
日期:2014-07-17 10:05:182015年迎新春徽章
日期:2015-03-04 09:58:11
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-10-14 15:43 |只看该作者 |倒序浏览
我是按照书上的代码写的,
在 home_page() 函数中的 tcp_connect()里,程序终止了

是 connect() 出现 Invalid arguments;

tcp_connect()就是 UNP P255页的代码。int tcp(const char *host,cosnt char * serv);
host 我写的是 "www.baidu.com"
serv "80"
connect() 无法成功,怎么解决??懂的人帮一下忙,感激不尽!!

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
2 [报告]
发表于 2012-10-14 19:45 |只看该作者
tcp_connect的代码你贴一下.

论坛徽章:
2
申猴
日期:2014-07-17 10:05:182015年迎新春徽章
日期:2015-03-04 09:58:11
3 [报告]
发表于 2012-10-14 21:53 |只看该作者
  1. int tcp_connect(const char *host,const char *serv)
  2. {
  3.         int sockfd,n;
  4.         struct addrinfo hints,*res,*ressave;
  5.         bzero(&hints,sizeof(struct addrinfo));

  6.         hints.ai_family = AF_UNSPEC;
  7.         hints.ai_socktype = SOCK_STREAM;
  8.         if((n = getaddrinfo(host,serv,&hints,&res)) != 0)
  9.         {
  10.                 perror("get addrinfo error\n");
  11.                 exit(0);       
  12.         }
  13.         ressave = res;
  14.         if(ressave == NULL)
  15.         {
  16.                 printf("can't get the addrinfo\n");
  17.         }
  18.         do
  19.         {
  20.                 sockfd = socket(res->ai_family,res->ai_socktype,res->ai_protocol);
  21.                 if(sockfd < 0)
  22.                 continue;
  23.                
  24.                 if(connect(sockfd,res->ai_addr,res->ai_addrlen) == 0)
  25.                 break;
  26.                
  27.                 close(sockfd);       
  28.         }while((res = res->ai_next) != NULL);
  29.         if(res == NULL)
  30.         {
  31.                 perror("tcp connect error\n");
  32.                 exit(0);
  33.         }
  34.         freeaddrinfo(ressave);
  35.         return sockfd;
  36. }
复制代码

论坛徽章:
2
申猴
日期:2014-07-17 10:05:182015年迎新春徽章
日期:2015-03-04 09:58:11
4 [报告]
发表于 2012-10-14 21:59 |只看该作者
真巧,我在csdn上也问了这个问题,第一个回答的人的头像也是这条蛇!

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
5 [报告]
发表于 2012-10-14 22:26 |只看该作者
还真没发现错误, 而且我试验也是可以正常连接的.

tcp        0      1 119.254.35.221:41980        220.181.111.147:80          FIN_WAIT1   -   

无效参数很费解, 不行你在hint里指定一下ai_family = AF_INET;吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP