Tag Archives: socket

[转]socket 编程中出现的两个情况及原因分析

感谢原文地址:http://blog.csdn.net/rstevens/archive/2008/11/12/3284661.aspx
1. Connection reset by peer
如果调用 read() 从 TCP 连接上接收数据并返回 -1,且 errno 为 104(Connection reset by peer);这通常表示对端程序没有关闭 socket 就直接退出了 (例如 core dump );
正常调用 close() 来关闭一个 socket, 会导致关闭连接的[......]

继续阅读

Linux下socket非阻塞的一些技巧

在Linux下,connect()建立连接,-1为失败,但是-1不一定就是完全失败!
-1的情况下,有的是因为非阻塞造成的,就是在error中设置了对应的出错情况,例如EINPROGRESS,EAGAIN等可以认为是“非致命错误”,认为是可以接受的,这种只是导致暂时阻塞等情况。
所以可以如下使用
int ret = connect(...);
if(!ret || noFatalError())
{
  //认为是成功的
}
bool nonFa[......]

继续阅读

Linux设置socket客户端的连接超时

非常感谢原作者:http://hi.baidu.com/ganss/blog/item/1c69d3139036a8836538dba0.html
 
原来我们实现connect()超时基本上都使用unix网络编程一书的非阻塞方式(connect_nonb),今天在网上看到一篇文章,觉得很有意思,转载如下:
读Linux内核源码的时候偶然发现其connect的超时参数竟然和用SO_SNDTIMO操作的参数一致:

  File: net/ipv4/af_inet.c
[cpp]
t[......]

继续阅读

今天之囧(二):Linux向外TCP最大连接只能打开28232个端口

晚上想写一个关于Echo服务器的压力测试,这一写,就出现不少问题,先是epoll的LT和EG问题,这个一会儿再说,然后改好了又遇到一个诡异的问题:在一个程序中反复用socket连接的话,到了28231左右就会莫名奇妙的断掉,提示:Cannot assign requested address,我在google,baidu搜索了这个数值半天,都没有什么结果。
终于找到了一篇文章,转载下来,感谢原作者:
http://hi.baidu.com/jabber/blog/item/da445182769[......]

继续阅读