第一次連接后無法連接不同的IP
class Client():
def __init__(self):
self.host = None
self.ip = None
self.error_count = 0
self._load_ip()
self._load_certs()
self._build_context()
self.connect()
def _load_ip(self):
self.ip = '19x.x.4'
self.port = xxxx
def _load_certs(self):
self.cert = '/path/'
def _build_context(self):
self.s = socket.socket(socket.AF_NET, socket.SOCK_STREAM)
self.context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
self.context.load_verify_locations(self.cert)
def connect(self):
try:
self.conn = self.context.wrap_socket(self.s, server_side=False)
self.conn.connect((self.ip, self.port))
return self.conn
except Exception as ex:
if self.error_count <=1:
self.error_count =1
self.ip = '19x.x.5'
self.conn.close() # close the previous connection
self._build_context() # call this function again for new socket
self.connect() # call the function again to try and connect to a different IP
raise (f"Error connecting {ex}")
想法是,如果第一個 IP 不起作用,我想嘗試不同的 IP。如果有任何錯誤,則如果錯誤計數 <=1 并且將不同的 IP 添加到self.ip并connect()再次呼叫該函式,則會執行例外,但它會給出以下錯誤:
[WinError 10060] 連接嘗試失敗,因為連接的一方在一段時間后沒有正確回應,或者連接的主機沒有回應,建立連接失敗
uj5u.com熱心網友回復:
try:
...
self.conn.connect((self.ip, self.port))
return self.conn
except Exception as ex:
if self.error_count <=1:
...
self.connect() # call the function again to try and connect to a different IP
raise (f"Error connecting {ex}")
當您在第一次失敗后嘗試連接到不同的 IP 地址時,您忽略了此新連接成功,并且仍然從初始連接失敗中引發錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/527803.html
標籤:python-3.x插座
