我有一个基本的服务器和客户端,当客户端连接时在服务器上打印一条消息,然后在客户端上打印一条消息,说“"感谢您的连接。”#34;但是当我尝试再次运行服务器时(关闭它之后),我得到了#34;错误:通常只允许使用每个套接字地址"(不完全)。当我再次更换端口时,它可以工作。
#Server
import socket
s = socket.socket()
host = socket.gethostname()
port = 12345
s.bind((host, port))
s.listen(5)
while True:
c, addr = s.accept()
print 'Got connection from', addr
c.send('Thank you for connecting')
c.close()
#Client
import socket
s = socket.socket()
host = socket.gethostname()
port = 12345
s.connect((host, port))
print s.recv(1024)
s.close
如果我将服务器的最后两行代码更改为
break
c.close()
它可以工作但关闭服务器。
如何在客户端断开连接后保持服务器运行,而不必每次都更改端口?
答案 0 :(得分:1)
您想设置套接字选项SO_REUSEADDR
:
示例:强>
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)