当前位置: 技术问答>linux和unix
求教!为何在socket编程中调recv函数无法阻塞?
来源: 互联网 发布时间:2015-02-15
本文导语: unix里socket编程,为什么在建立连接后第一次用recv函数是阻塞的,但一有数据传过来接收下来后再调recv函数就不是阻塞了,它马上就返回了,返回的包长度倒是变成0了。这样我要是把它放在一个循环里就会造成死循...
unix里socket编程,为什么在建立连接后第一次用recv函数是阻塞的,但一有数据传过来接收下来后再调recv函数就不是阻塞了,它马上就返回了,返回的包长度倒是变成0了。这样我要是把它放在一个循环里就会造成死循环了,怎么办?
|
问题在于你创建了子进程,当第一个连接建立之后,父进程执行了关闭socket,同时,子进程进行接收数据。但此时,socket连接已经断掉。因此,子进程接收返回失败。所以出现死循环。