0

我有一个侦听客户端的服务器套接字。该服务器在无限循环中运行。在处理完每个连接的客户端后,关闭“连接的套接字”。我应该在已连接套接字的文件描述符上使用 setsocketopt 以实现可重用性吗?由于服务器套接字文件描述符永远不会关闭,我希望该套接字一直存在。

另外,我假设侦听服务器套接字被阻塞,直到新客户端建立连接,因此这不会耗尽内存。不是吗?请帮忙。

谢谢,

4

2 回答 2

0

您似乎不知道 SO_REUSEADDR 的用途。它没有你赋予它的神奇属性。套接字将一直存在,直到您关闭它。在大多数情况下,任何套接字描述符都不需要 SO_REUSEADDR。如果您没有收到绑定错误,则根本不需要它。

于 2012-08-20T23:54:07.563 回答
0

如果您正在考虑SO_REUSEADDR,它不会让您重新使用相同的套接字进行新连接。另外,我认为这不会给你买太多东西。创造新事物fd/socket并不是一项艰巨的任务。您会发现除此之外的其他瓶颈。

但是您可以通过不关闭连接(在服务器和客户端)进行优化,以便同一个客户端可以通过该连接进行通信以获取下一个请求。这将减少您的连接设置时间。

是的,默认情况下侦听套接字是阻塞的,因此accept调用将被阻塞。此外,这不会使用太多内存。您可以使其成为非阻塞并使用pollselect确定新的传入连接。

于 2012-08-20T09:28:27.360 回答