我有一个简单的服务器/客户端.我使用netcat作为客户端来测试服务器.如果我在客户端退出之前停止服务器,我将无法再启动服务器一段时间,我发现此错误:"[Errno 98]地址已在使用中"
但如果我先关闭客户端,然后服务器停止,我将不会有这个问题.
我的服务器套接字如下:
try:
s=socket
s.bind(..)
s.listen(1)
conn,addr=s.accept()
finally:
conn.close()
s.close()
Run Code Online (Sandbox Code Playgroud)
我觉得服务器没有正确关闭套接字.但我不知道如何解决这个问题.
你关闭插座就好了.但是,套接字在套接字关闭后继续使用资源几分钟,因此如果远程端错过了数据包,则可以重新发送数据包.
在致电之前,您应该可以通过拨打以下电话来解决问题bind
:
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
Run Code Online (Sandbox Code Playgroud)
这将告诉操作系统您希望允许多个套接字绑定.