首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

为啥读套接字(recv)的时候被信号中断,但是返回值为0

2013-06-25 
为什么读套接字(recv)的时候被信号中断,但是返回值为0谁能帮忙看一下,弄了一天了,就是查不出来哪里出了问

为什么读套接字(recv)的时候被信号中断,但是返回值为0
谁能帮忙看一下,弄了一天了,就是查不出来哪里出了问题!
程序逻辑:服务器端与客户端交互的程序,服务器端接受客户端的不同的请求,对应做出不同的处理
程序问题:
    服务器端:recv 在阻塞等待接受客户端的请求,如果10秒钟收不到客户端的请求则产生一个闹钟信号,为什么每次产生信号的时候recv的返回值为0,如果有信号中断recv函数的时候返回值应该是-1啊,我查看了errno的值,也是0!于是我晕了!求助哪位高人帮忙指点一下!,谢了
[解决办法]
#man recv


RETURN VALUE
       These  calls  return  the number of bytes received, or -1 if an error occurred.  The return value will be 0 when the peer
       has performed an orderly shutdown.
[解决办法]
Scoket是双全工的,即某一时刻既可以发送数据,也可以接收数据。
如果对方关闭了socket,此时你接收数据,肯定会返回0。
[解决办法]
对端关闭了, 所以你的read将始终返回0, 无论你读几遍。

热点排行