我有一个简单的UDP套接字程序在C.客户端传输数据到服务器并收到确认。我已经知道如何配置超时,以便如果'recvfrom()'在一段时间内没有收到任何消息,闹钟就会响起。如何在C UDP套接字程序中配置重传超时?
但是还有一些情况需要处理。如果我收到来自意外地址的回复,或回复格式不正确,该怎么办?只有当闹铃响起时,我才会立即转发。
让我知道我是否需要澄清。
我有一个简单的UDP套接字程序在C.客户端传输数据到服务器并收到确认。我已经知道如何配置超时,以便如果'recvfrom()'在一段时间内没有收到任何消息,闹钟就会响起。如何在C UDP套接字程序中配置重传超时?
但是还有一些情况需要处理。如果我收到来自意外地址的回复,或回复格式不正确,该怎么办?只有当闹铃响起时,我才会立即转发。
让我知道我是否需要澄清。
调查select(2)
和poll(2)
- 您可以在套接字上等待指定的时间。如果需要,您可以重新启动等待时间较短的超时。
如果您在Linux上,请查看epoll(7)
和timerfd_create(2)
。
如果您想检查并查看它们是来自意外地址还是格式不正确,您将必须对收到的数据报进行处理。为了更轻松地处理这些案例,您应该构建一个状态机来处理您的不同案例。
例如,你可以有以下状态:
此外,如果您发现之一这些其他的错误条件,你不想立即重新发送你将需要你一些定时器或睡眠con要等到你准备好转发。
报警?你是从beej网络代码中挑选出来的吗? – tbert 2012-03-02 17:04:20
谁/什么是beej? – Groppe 2012-03-02 17:21:08