窗口 c++ :如何在基于 udp 的对话中使 receiveFrom 函数超时
我正在尝试在 UDP 之上创建可靠的服务。 如果没有数据包到达,我需要超时 window C++ 的 receiveFrom
函数 在指定的时间内。 在java中我这样做DatagramSocket.setSoTimeout
但我不知道如何在Windows C++中实现这一点。
谢谢
I am trying to create a reliable service on top of UDP.
Here i need to timeout receiveFrom
function of window c++ if not packet arrives
in specified time.
In java i do this DatagramSocket.setSoTimeout
but i dont know how to achieve this in windows c++.
thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
看看
setsockopt()
特别是SO_RCVTIMEO
。Take a look at
setsockopt()
specificallySO_RCVTIMEO
.尝试使用选择。这适用于 TCP 和 UDP 套接字。这是与 Len 的答案中执行相同操作的另一种方法,但您可以在逐个调用的基础上设置超时长度,而不是为套接字上的所有接收操作设置超时。
Try using select. This will work on both TCP and UDP sockets. Just another way to do the same thing as in Len's answer, but instead of setting a timeout for all recv operations on the socket you can set the length of the timeout on a call by call basis.