2013-08-07 32 views

回答

1

如果您希望通过套接字接收任何内容,那么您希望在整个时间内都能收到它。

如果您希望在未收到任何回复的情况下发送多封邮件,则您已经有设计错误,但似乎没有一个很好的理由说明为什么要继续打开和关闭UDP套接字。只要有必要,让插座保持打开更合理?

+0

这是没有设计错误,因为它只是一个路由器发送统计信息。问题是,真正让一个无限长的套接字变得更加敏感,还是创建短的套接字更好? – Shaac

+0

让我们来回顾一下。它是否真的有意义*不*有一个'无限长的插座'?并创建一个新的套接字每个传输?并可能失败?如果你已经拥有了插座,你就不会失败? – EJP

1

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

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

+0

因此,套接字创建过程只是存储要在发送功能中使用的参数? – Shaac

+0

我有我的条款混乱:你必须调用'socket'来获得一个fd,所以你可以与操作系统交谈。调用'connect'只存储参数。 – Joni

相关问题