Chinaunix

标题: recvfrom为什么不返回? [打印本页]

作者: shaohongqiang    时间: 2010-04-23 18:45
标题: recvfrom为什么不返回?
系统:turbolinx

采用udp阻塞模式,多线程运行,在一个线程中调用recvfrom,阻塞中.另一个线程中在检测到规定时间内recvfrom都没有收到数据,close其socket.此时recvfrom是不是应该立即返回?

在windows下好像是立即返回的,但是现在recvfrom没有立即返回,而且close socket后,如果有数据过来recvfrom竟然还能接收正常.

各个高手能不能给解释一下为什么close socket后,recvfrom不返回错误,反而还是在阻塞运行,并且还能正常接收到数据?
作者: shaohongqiang    时间: 2010-04-23 22:09
有高手帮帮我吗?
作者: ubuntuer    时间: 2010-04-24 11:11
为什么不用select  or 定时器呢?
作者: lenky0401    时间: 2010-04-24 21:39
这个东西具体不知道~ 没看源码~ 不过我猜是close并不会导致recvfrom断开~ 它只是减少那个套接口的引用计数器~ 类似于删除文件一样~
以上属于个人YY的~ 如有雷同~ 纯属巧合~ O(∩_∩)O哈哈~
作者: gigabyte    时间: 2010-04-25 00:50
用select()




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2