[英]How do I configure a retransmit timeout in a C UDP socket program?
我在C语言中有一个简单的UDP套接字程序。客户端将数据传输到服务器并接收确认。 我已经知道如何配置超时,这样,如果'recvfrom()'在特定时间内没有收到任何警报,便会响起。
但是,我还需要处理其他几种情况。 如果我收到来自意外地址的答复,或者答复的格式不正确怎么办? 我不希望仅在警报响起时立即重新发送。
让我知道是否需要澄清。
查看select(2)
和poll(2)
-您可以在套接字上等待指定的时间。 然后,可以根据需要以更短的超时时间重新开始等待。
如果您使用的是Linux,请查看epoll(7)
和timerfd_create(2)
。
如果要检查接收的数据报,并查看它们是否来自意外的地址或格式是否错误,则必须对其进行处理。 为了使处理这些案件更加容易,您应该构建一个处理不同案件的状态机。
例如,您可能具有以下状态:
同样,如果您检测到这些其他错误情况之一,并且不想立即重传,则将需要某种计时器或睡眠条件来等待,直到准备好重传为止。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.