Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中重新启动套接字服务器_Python_Sockets_Restart - Fatal编程技术网

在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')

我用python(OSX)编写了一个简单的套接字服务器。我希望当客户端终止通信时服务器重新启动,以便客户端可以重新连接到服务器。看看下面的代码,如果“失去联系”,我该怎么办?我对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 

我不知道你是否找到了答案,但我是在寻找同一个问题时找到的。我试图重置服务器上的套接字,以便连接到下一个客户端,所以我尝试使用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
,因此可以忽略它们。