在Python中重启套接字服务器
我用Python写了一个简单的套接字服务器(在OS X上)。我希望当客户端结束通信时,服务器能够重启,这样客户端就可以重新连接到服务器。请看下面的代码,我在“失去联系”的那个IF语句里需要做什么?我对Python完全是新手。
以下是代码:
import socket
import os
s = socket.socket()
host = socket.gethostname()
port = 5555
os.system('clear')
print 'Server started'
print 'Waiting'
s.bind((host, port))
s.listen(5)
c, addr = s.accept()
print 'Contact', addr
while True:
msg = c.recv(1024)
if not msg:
s.close
print "Lost contact"
exit ()
else:
print msg
2 个回答
0
如果我理解没错的话,你是想在客户端断开连接时再次进行监听,这段代码应该能帮你实现这个功能:
import socket
import os
s = socket.socket()
host = socket.gethostname()
port = 5555
os.system('clear')
print 'Server started'
print 'Waiting'
def server():
s.bind((host, port))
s.listen(5)
c, addr = s.accept()
print 'Contact', addr
while True:
msg = c.recv(1024)
if not msg:
s.close
print "Restarting..."
server()
else:
print msg
1
我不知道你是否找到了解决办法,但我在寻找同样的问题时发现了这个。我当时想在服务器上重置套接字,以便可以连接下一个客户端,所以我尝试使用socket.close(),然后重新初始化整个套接字。但其实你在服务器端不需要做任何事情,只需在客户端使用socket.close(),这样另一个客户端就可以连接,而不会影响服务器。(我知道这可能现在对你帮助不大,但如果其他人也遇到我遇到的问题,我希望他们能知道这一点。)