免费注册 查看新帖 |

Chinaunix

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

[Linux] 一个connect的 问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-02-24 14:02 |只看该作者 |倒序浏览
一个socket描述符,在 不设置 非阻塞的情况下 如果使用connect是会 阻塞连接的不

比较矛盾的是,我试了一下(server端不开,client直接连),  当连接到 外部的 地址时,就是阻塞的,局域网内的地址就是  不阻塞的
  1.     int s = socket(AF_INET, SOCK_STREAM, 0);
  2.     if(s == -1){perror("create socket fail");return 1;}

  3.     struct sockaddr_in myAddr = {0};
  4.     myAddr.sin_family = AF_INET;
  5.     myAddr.sin_port = htons(60001);
  6.     myAddr.sin_addr.s_addr = inet_addr("192.168.1.24");
  7.     //myAddr.sin_addr.s_addr = inet_addr("202.96.209.5");
  8.     if(connect(s, (struct sockaddr*)&myAddr, sizeof(myAddr)) == -1)
  9.     {   
  10.         if(errno != EINPROGRESS)
  11.         {   
  12.             perror("connect fail");
  13.             return 1;
  14.         }   
  15.     }   
  16.     else
  17.     {   
  18.         printf("connect success\n");
  19.         return 1;
  20.     }   
复制代码
注释的部分 就是变成 外部的地址,  为啥内网 直接就是 connect refuse, 而 外网 会阻塞
望 高手回答

论坛徽章:
11
技术图书徽章
日期:2014-03-01 14:44:34天蝎座
日期:2014-05-21 22:11:59金牛座
日期:2014-05-30 17:06:14
2 [报告]
发表于 2014-02-24 14:29 |只看该作者
内网中找到了主机,但端口没有被listen,直接refuse。路由到外网就很难说了,可能早被某个防火墙拦下了,等着超时吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP