socket服务端,长时间和客户端连接,接收客户端的数据,服务端会删除连接异常的socket连接,在重新创建和客户端socket连接,大概一天左右,客户端连上服务端,但不能通信。原因是服务端的端口没有更多的分配,造成的。 因为客户端频繁和服务端,创建socket连接。
思路: 关闭现有的socket连接,在睡眠一段时间,在建立socket连接,
socket完全关闭
socket.shutdown()
socket.close()
问题: 服务端close socket连接,在开启socket服务。到出现 ValueError: file descriptor cannot be a negative integer (-1) 错误。
因为是和客户端的tcp连接没有都关闭。 通过netstat -ano | grep port 查看tcp连接
tcp 0 0 ***:* 180.166.248.170:4437 ESTABLISHED off (0.00/0/0)
tcp 0 0 ***:* 180.166.248.170:4389 ESTABLISHED off (0.00/0/0)
tcp 0 0 ***:* 180.166.248.170:4364 ESTABLISHED off (0.00/0/0)
tcp 0 0 ***:* 180.166.248.170:4458 ESTABLISHED off (0.00/0/0)
还有tcp建立连接,关闭后出现 的是FIN_WAIT2 timewait 。
timewait. 默认是4分钟关闭。可以通过修