2013-02-25 35 views
1

我已經在python(OS X)中編寫了一個簡單的套接字服務器。我希望服務器在客戶端終止通信時重新啓動,以便客戶端可以重新連接到服務器。看看下面的代碼,我需要做什麼在「失去聯繫」IF?我對Python完全陌生。在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 
+0

shouldn 't's = socket.socket()''s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)'?另外,爲什麼你需要重新啓動服務器?客戶端應該能夠重新連接。另外,你可以添加客戶端軟件 - 也許這是問題。最後,我相信'os'模塊已經過時 - 我可能錯了(雖然它有它的用處......我想) – xxmbabanexx 2013-02-25 23:03:58

+0

考慮使用[SocketServer.TCPServer](http://docs.python.org/2 /library/socketserver.html#socketserver-tcpserver-example)。 – crayzeewulf 2013-02-25 23:04:59

+0

謝謝@crayzeewulf,減緩了我的問題:) – 2013-02-25 23:28:29

回答

0

我不知道你是否發現過你的答案,但我發現這個時候我正在尋找同樣的問題。我試圖重置服務器上的套接字,以便我可以連接到下一個客戶端,所以我嘗試使用socket.close(),然後重新初始化整個套接字,但實際上並不需要在服務器端執行任何操作,只需在客戶端使用socket.close(),另一個客戶端就可以連接而不會造成服務器故障(我意識到這可能不會幫助你,但如果其他人做了我所做的事情,我希望他們知道)

相關問題