2

我正在尝试TIMEOUT在我的 UDP 停止等待中实现该功能。也就是说,我ACK故意让我的接收者不发送,并期望发送者在TIMEOUT.

但是,正如recvfrom文档所说:

如果套接字上没有可用的消息,则接收调用会等待消息到达,除非套接字是非阻塞的。

所以我的发送者和接收者都卡在sendto()and recvfrom()。他们都挂了!最有办法让我可以让代码继续运行,从而实现TIMEOUT.

我该怎么做?

4

2 回答 2

3

看看函数select pollepoll。他们可以帮助超时。在等待多个文件描述符(套接字)时,它们也非常有用

于 2013-10-28T17:00:15.230 回答
2

通过函数设置SO_RCVTIMEO选项。setsockopt()然后,如果超时触发,recvfrom()将返回 -1 并errno设置为EAGAINor EWOULDBLOCK

于 2013-10-28T22:14:05.437 回答