我已经使用 C 在 Linux 上创建了一个 TCP 套接字。 Clientconnect()
的到 server 和 serveraccept()
的它。当客户端请求已被服务 - 或发生超时 - 我希望该套接字完全关闭。
但是,尽管双方都调用了该函数,但我在终端中看到套接字在该状态下close()
还存活了几分钟。TIME_WAIT
问题是,我怎样才能完全杀死它?
请记住,我不需要与 Google 搜索时看到的任何握手FIN
和ACK
标志。
编辑:我看过这个避免 TIME_WAIT线程,但它已经 9 岁了,这就是我不完全信任它的原因。
还有,我要实现的通信是本地主机中的进程间通信,必须能够每秒打开和关闭最多100个连接。这就是为什么,我不需要任何握手。而且我不希望套接字保持在 TIME_WAIT 状态一分钟,因为操作系统充满了套接字并且性能显着下降。
编辑 2:最后我使用了 SO_REUSEPORT 标志并且没有延迟尝试打开新连接,如果操作系统已经填满......
UDP 套接字不满足我程序的其他规范...