最好有一个长或多个短UDP套接字?

时间:2013-08-07 10:15:16

标签: c sockets udp

我想通过套接字定期发送UDP消息。

使用一个套接字或为每条消息重新创建一个套接字并在之后关闭它们会更好吗?

由于UDP是无状态的,它甚至会改变什么吗?

2 个答案:

答案 0 :(得分:1)

如果您希望通过套接字接收任何内容,那么它最好在您期望接收的整个时间内存在。

如果您希望在没有收到任何回复的情况下发送多条消息,那么您已经遇到了设计错误,但似乎没有充分的理由为什么您会为此目的继续打开和关闭UDP套接字。当然,只要有必要,保持套接字打开更有意义吗?

答案 1 :(得分:1)

由于UDP是面向数据包的协议,因此没有“连接”可以打开或关闭。如果要向特定地址发送大量消息,可以在UDP套接字上调用connect,然后使用sendrecv进行通信,而不是sendtorecvfrom。这样,您不必在每次函数调用时指定希望数据发送的地址,但这并不意味着建立了连接。

因此,创建一个套接字并重新使用它,或者每次创建一个新套接口更好,更多地取决于您的编程风格:如果您创建了大量套接字并长时间存储它们而不使用它们,那么可能最终耗尽套接字。然后再次要求操作系统频繁创建新套接字可能会成为性能瓶颈,如果你在紧密循环中这样做。