以下是我的环境:
我正在实现一个TCP套接字服务器应用程序 在开发/调试时,应用程序可能会在接受连接后终止,并且在打开的套接字正常关闭之前就会终止。关闭。 在这种情况下,下一次执行应用程序将无法绑定到侦听端口,只有在等待一分钟后左右绑定才会再次成功。
我的假设是Linux内核有一些清理机制来〜收集所有未正常关闭的套接字,解释为什么我必须等待〜1分钟才能再次绑定端口。
说完了,有没有办法避免这1分钟的等待?有没有办法强制操作系统收集没有正常关闭的所有套接字?
任何帮助将不胜感激。
Sophin的Nadav
答案 0 :(得分:4)
确实有,只需在套接字上设置SO_REUSEADDR
SOL_SOCKET
级别选项。
int yes = 1;
if (setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof yes))
perror("setsockopt");