在python中重新启动套接字服务器
我用python(OSX)编写了一个简单的套接字服务器。我希望当客户端终止通信时服务器重新启动,以便客户端可以重新连接到服务器。看看下面的代码,如果“失去联系”,我该怎么办?我对Python一无所知 代码如下:在python中重新启动套接字服务器,python,sockets,restart,Python,Sockets,Restart,我用python(OSX)编写了一个简单的套接字服务器。我希望当客户端终止通信时服务器重新启动,以便客户端可以重新连接到服务器。看看下面的代码,如果“失去联系”,我该怎么办?我对Python一无所知 代码如下: import socket import os s = socket.socket() host = socket.gethostname() port = 5555 os.system('clear')
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
我不知道你是否找到了答案,但我是在寻找同一个问题时找到的。我试图重置服务器上的套接字,以便连接到下一个客户端,所以我尝试使用socket.close()然后重新初始化整个套接字,但实际上您不需要在服务器端执行任何操作,只需在客户端使用socket.close(),另一个客户端就可以连接,而不会损坏服务器(我意识到这可能对你没有多大帮助,但如果其他人做了我想让他们知道的事)如果我找到了你,当客户端断开连接时,你想再次收听,所以这应该可以完成它的工作:
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
不应该
s=socket.socket()
s=socket.socket(socket.AF\u INET,socket.SOCK\u STREAM)?还有,为什么需要重新启动服务器?客户端应该能够重新连接。另外,您可以添加客户端软件吗?也许这就是问题所在。最后,我认为操作系统
模块已经过时了-我可能错了(它确实有它的用途…我想)考虑使用。谢谢@crayzeewulf,我的问题:)@xxmbanexx,socket.socket()
的默认参数是socket.AF\u INET
和socket.SOCK\u STREAM
,因此可以忽略它们。