我正在编写一个
Python客户端,它连接服务器中的简单套接字(也用Python编写).我希望在服务器中的连接被拒绝时阻止客户端终止.换句话说,我想每30秒让客户端“搜索”服务器(如果没有连接).
这是我编写的代码,但是当连接从服务器终止时,客户端返回连接被拒绝的错误,并终止自身.
码:
#!/usr/bin/python
import socket
import time
while True:
sock = socket.socket()
host = socket.gethostname()
port = 4444
conn = sock.connect((host,port))
while(conn != None):
print 'Waiting for the server'
time.sleep(30)
sock = socket.socket()
host = socket.gethostname()
port = 4444
conn = sock.connect((host,port))
while True:
recv_buf = sock.recv(1024)
if (recv_buf == 'exit'):
break
print(recv_buf)
sock.send('hi server')
错误:
06001
conn = sock.connect((host,port)) File “C:\Program Files\python27\lib\socket.py”, line 224, in meth
return getattr(self._sock,name)(*args) socket.error: [Errno 10061] ─ίΊ ▐ΪάΊ ϊΫΊάΪ▐ ύ ϊύΉώΎΫ±ή▀ά ≤²Ίϊί≤ύ≥,
所以任何想法,这将有助于不终止客户端,但让它不断寻找服务器,是受欢迎的.
最佳答案 使用try-except:
conn = None
while(conn == None):
sock = socket.socket()
host = socket.gethostname()
port = 4444
try:
conn = sock.connect((host,port))
except:
print 'Waiting for the server'
time.sleep(30)
最好避免初始连接调用,并仅通过while循环中的connect执行连接.我也做了一些其他的更改,比如将睡眠调用移到except部分.