TIME_WAIT一般是发生在服务期端的,因为客户端的端口再次链接时会重新分配,当然你也可以指定客户端的端口,只是一般不这么做。我试过用bind去绑定客户端,但下次链接时端口还是会发生改变。
TIME_WAIT如何改变?
改动内核參数/proc/sys/net/ipv4/tcp_tw/recycle来高速回收被关闭的socket,从而是tcp连接根本不进入time_wait状态,进而同意应用程序马上重用本地的socket地址。
如何处理半打开连接?
在服务器加心跳包机制。
心跳包的做法: