资源暂时不可用,UDP套接字

时间:2019-07-11 19:27:29

标签: linux sockets udp

我正在通过UDP套接字与设备通信。我发送一个命令,然后收到它的响应。消息需要每100毫秒发送一次。我用

设置了接收超时
model

其中struct timeval t = {.tv_sec = 0, .tv_usec = 100000}; setsockopt(fd, SOL_SOCKET, SO_RCVTIMEO, t, sizeof(t)); 是我的套接字文件描述符。一切工作了很长时间,但随后我在fd调用中开始出现Resource temporarily unavailable错误。据我了解,这是因为接收缓冲区中没有任何内容。我期望在下一次迭代中缓冲区将满,但是我仍然得到recvfrom(...)。换句话说,系统无法恢复。套接字本身,套接字上的设置还是设备有问题吗?

1 个答案:

答案 0 :(得分:0)

如果最初获得流量,套接字或其配置应该没有问题。如果是这种情况,您会看到不同的错误消息。

如果您连续仅遇到一次或两次消息,则可能是由于某些网络问题而导致网络延迟或数据包丢失。 (例如,交换机故障,网络连接速度慢等)

如果您始终遇到此消息(每次调用recvfrom),则客户端和服务器之间的连接可能存在问题。我会验证客户端是否仍在发送邮件并检查您的网络连接。

相关问题