码迷,mamicode.com
首页 > 数据库 > 详细

recv返回0对方已经saygoodbye,返回-1意味着异常中断

时间:2014-11-28 10:31:07      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:saygoodbye   空间   字符串   婴儿   

当对方中断连接,关闭套接字的时候,recv将返回0,告诉自己:不想跟你打交道了
         当对方与你失去连接,很遗憾,我们之间也不可能通讯了,还是别的方式交流吧。
        当我以为判断recv返回-1就已经足够的证明:自己的仔细,但是0注定只是一个鸭蛋,需要重新估量的分量。
    没有多余的言语描述自己在初级阶段的尝试,就像一个婴儿学飞,注定是一只笨鸟。
    有没有想过重新使用一个已经被抛弃的SOCKET,为的就是减少绑定的绳索。不敢尝试,代价无法接受的浅薄。
    发送一个空的字符串,其实对方一样也能够接收到,相同内存空间大小的空字符串。
     char recvBuf[1000];
 int len=recv(sockClient,recvBuf,sizeof(recvBuf),0);
 printf("%s\n",recvBuf);//空
 printf("%d\n",len);//100

 

说明:

一、参数有错
二、在非套接字上进行操作或者套接字已失效
三、被信号中断
四、在一个非阻塞套接字上接收,并且数据未准备好
五、套接字未连接
六、远程主机拒绝
七、指定的缓冲获越界了
对于无连接的socket而言,用recvfrom返回0表示收到0字节数据,对于有连接的socket, recvfrom返回0表示对方关闭了连接,这个是规定而非必需如此,比如写这个系统调用或函数的人也可以让recvfrom这个函数对于无连接的socket返回-1,然后把errno设置成为一个ENODATA或什么的,对于有连接的socket这个函数也完全可以返回-1然后把errno设置成一个对应的E...来表示对方关闭连接。
recv返回0代表连接中断,返回-1呢

recv返回0对方已经saygoodbye,返回-1意味着异常中断

标签:saygoodbye   空间   字符串   婴儿   

原文地址:http://5228690.blog.51cto.com/5218690/1583701

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!