csdnqixiaoxin
2017-11-02 10:51设置接收超时的两种方法:select与setsockopt的问题
在udp编程中,我要调用recvfrom接收数据。我尝试使用了两种设置接收超时的办法:
1)使用select函数;2)使用setsockopt函数。
服务器和客户端的流程是这样的:客户端向服务器发送数据,并使用recvfrom等待数据(分别使用两种方法设置超时);服务器收到数据后,sleep一段时间,向客户端回复数据。
问题在这儿:使用select函数时,两端的超时能对得上,也就是说,如果客户端设3s超时,服务器sleep 3s以下,则客户端可以收到服务器的数据,服务器sleep 3s以上就不行了。但使用setsockopt函数时,如果客户端设置3s超时,服务器sleep 3.5s以下,客户端都能收到服务器的数据,客户端不应该已经超时了吗?我想问这多出来的0.5s该怎么解释?
- 点赞
- 回答
- 收藏
- 复制链接分享
0条回答
为你推荐
- 请教WSAIoctl(.., SIO_RCVALL)监听网络, 返回10022,WinXP下可以,Win7下失败。
- c语言
- 开发语言
- c++
- 3个回答
- 学习socket raw写一个发送,想测试一下src/des ip都填了127.0.0.1 但是sendto失败了,ip问题吗该怎么填呢
- linux
- c语言
- 2个回答
- Golang net.Listen绑定到已使用的端口
- python
- sockets
- macos
- networking
- 2个回答
- QT平台Socket编程问题
- c语言
- c++
- 4个回答
- ruby的TCPSocket用read/write不能通信,用gets/puts就可以
- ruby
- 0个回答
换一换