Socket Exception не может переподключиться к сети в Python - PullRequest
0 голосов
/ 06 октября 2018

когда сеть отключается, сокеты выдают ошибку вместо повторного подключения.Он восстанавливает соединение, но не пытается установить соединение.выдает ошибку во второй или третьей попытке.Нужно ли увеличивать время ожидания или есть что-то, что можно добавить, чтобы убедиться, что переподключение происходит

import socket,time
client=socket.socket(socket.AF_INET,socket.SOCK_STREAM)    
client.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

ip = '192.168.xx.x'
port = 4196
address = (ip,port)

client.connect(address)
print("connecting")


while 1:
    try:
        client.send(b'\x01\x04xxxxxxx')
        print("sent")
        data = client.recv(1024)
        print(data)
        time.sleep(5)
    except socket.error:
        while 1:
            print("error")
            client.close()
            time.sleep(30)
            print("reconnecting")
            client=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
            while 1:
                client.connect(address)
                print("connected back")
                break        
            break

Выход:

connecting
sent
01 04 xxxxxxxxx
error
reconnecting

Ошибка:

Traceback (most recent call last):
  File "C:\Users\User\eclipse-workspace\Data\pwr\TCP.py", line 15, in <module>
    client.send(b'\x01\x04\xxxxxxxxxxx')
ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host

 During handling of the above exception, another exception occurred:  

Traceback (most recent call last):
  File "C:\Users\User\eclipse-workspace\Data\pwr\TCP.py", line 28, in <module>
    client.connect(address)
ConnectionAbortedError: [WinError 10053] An established connection was aborted by the software in your host machine
...