ОШИБКА ПРОГРАММЫ КЛИЕНТА Была предпринята попытка выполнить что-то, что не является сокетом - PullRequest
0 голосов
/ 05 октября 2018

Я использую клиентскую программу на своем локальном компьютере для подключения к серверу.связь отличная, пока сеть не выходит из строя.Когда сеть отключается, я пытаюсь закрыть сокет и восстановить соединение.Но shutdown () и close () не работают должным образом в клиентской программе.до сих пор я видел shutdown () и close () в серверной программе, а не в любой клиентской программе.Пожалуйста, помогите мне, если есть какой-либо способ решить проблему.

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

    ip = '192.168.10.3'
    port = 4196
    address = (ip,port)

    def con():
        client.connect(address)
        print("connected")

    def comm():
        while 1:
            try:
                client.send(b'\x01\x04\x00\x00\x00\x02\x71\xcb')
                print("sent")
                data= client.recv(1024)
                print(" ".join("{:02x}".format(byte) for byte in (data)))
                time.sleep(10)
            except ConnectionResetError:
                print("reset error")
                client.shutdown(socket.SHUT_RD)
                client.close()
                time.sleep(20)
                con()


    con()
    comm() 


    Error:
    Traceback (most recent call last):
    File "C:\Users\User\eclipse-workspace\Data\pwr\TCP.py", line 17, in comm
        datasent = client.send(b'\x01\x04\x00\x00\x00\x02\x71\xcb')
        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 30, in <module>
           comm()
        File "C:\Users\User\eclipse-workspace\Data\pwr\TCP.py", line 26, in comm
           con()
        File "C:\Users\User\eclipse-workspace\Data\pwr\TCP.py", line 11, in con
           client.connect(address)
           OSError: [WinError 10038] An operation was attempted on something that is not a socket

1 Ответ

0 голосов
/ 06 октября 2018

спасибо за разрешение @KlausD.необходимо создать новый сокет для повторного подключения.перезапустить socket.socket (...),

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...