Python套接字错误"通常只允许使用每个套接字地址#34;

时间:2015-05-24 05:50:20

标签: python sockets

我有一个基本的服务器和客户端,当客户端连接时在服务器上打印一条消息,然后在客户端上打印一条消息,说“"感谢您的连接。”#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()

它可以工作但关闭服务器。

如何在客户端断开连接后保持服务器运行,而不必每次都更改端口?

1 个答案:

答案 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)