0

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

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

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

4

2 回答 2

1

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

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

于 2013-08-07T10:17:15.993 回答
1

由于 UDP 是面向数据包的协议,因此没有“连接”可以打开或关闭。如果您要向特定地址发送大量消息,您可以调用connectUDP 套接字,然后使用sendandrecv代替 and 进行sendto通信recvfrom。这样,您不必在每个函数调用中指定要发送数据的地址,但这并不意味着建立了连接。

因此,是创建一个套接字并重用它,还是每次都创建一个新套接字更好,这更多地取决于您的编程风格:如果您创建大量套接字并在不使用它们的情况下长时间存储它们,您最终可能会运行没有插座。再说一遍,如果您在一个紧密的循环中执行它,要求操作系统频繁创建新套接字可能会成为性能瓶颈。

于 2013-08-07T10:23:27.570 回答