结束一个应用之后,用netstat查看应用启动的socket端口还在TIME_WAIT状态。
也可以用 lsof -i:端口号查看端口被哪个进程占用。
原因是
正常情况下:TCP断开连接的4次挥手中处于TIME_WAIT方需要等待一段时间,已防止最后的ACK分解丢失,这样导致服务器端的端口也仍然处于使用中。
解决方法:
设置setsockopt的SO_REUSEADDR选项,就可以避开了这个限制,使得端口关闭后,服务器程序能立即重启。
结束一个应用之后,用netstat查看应用启动的socket端口还在TIME_WAIT状态。
也可以用 lsof -i:端口号查看端口被哪个进程占用。
原因是
正常情况下:TCP断开连接的4次挥手中处于TIME_WAIT方需要等待一段时间,已防止最后的ACK分解丢失,这样导致服务器端的端口也仍然处于使用中。
解决方法:
设置setsockopt的SO_REUSEADDR选项,就可以避开了这个限制,使得端口关闭后,服务器程序能立即重启。