当前位置: 技术问答>linux和unix
求教!为何在socket编程中调recv函数无法阻塞?
来源: 互联网 发布时间:2015-02-15
本文导语: unix里socket编程,为什么在建立连接后第一次用recv函数是阻塞的,但一有数据传过来接收下来后再调recv函数就不是阻塞了,它马上就返回了,返回的包长度倒是变成0了。这样我要是把它放在一个循环里就会造成死循...
unix里socket编程,为什么在建立连接后第一次用recv函数是阻塞的,但一有数据传过来接收下来后再调recv函数就不是阻塞了,它马上就返回了,返回的包长度倒是变成0了。这样我要是把它放在一个循环里就会造成死循环了,怎么办?
|
问题在于你创建了子进程,当第一个连接建立之后,父进程执行了关闭socket,同时,子进程进行接收数据。但此时,socket连接已经断掉。因此,子进程接收返回失败。所以出现死循环。
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。