python – 由于“连接被拒绝”错误而阻止应用程序关闭

我正在编写一个
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部分.

点赞