首页 文章

Python套接字错误“通常只允许使用每个套接字地址一次”

提问于
浏览
0

我有一个基本的服务器和客户端,当客户端连接时在服务器上打印一条消息,然后在客户端上打印一条消息,说“谢谢连接” . 但是当我再次尝试运行服务器时(关闭它之后),我得到“错误:通常只允许使用每个套接字地址一次”(不完全正确) . 当我再次更换端口时,它可以工作 .

#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 回答

  • 1

    您想要设置套接字选项 SO_REUSEADDR

    Example:

    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)
    

相关问题