ConnectionAbortedError: [Errno 53] Программное обеспечение вызвало прерывание соединения - PullRequest
0 голосов
/ 17 июня 2020

я пытаюсь установить sh соединений для нескольких сокетов с использованием многопоточности

это код

import socket as sc
if __name__ == '__main__':


    #setup()
    ports = [10000, 10010, 10020, 10030]

    init_sockets()
    init_threads()
def init_sockets():

    global host_ip
    global sockets

    host_ip = sc.gethostname()
    sockets = []

    for port in ports:

        socket = sc.socket()
        socket.bind((host_ip, port))
        socket.listen()
        sockets.append(socket)
def init_threads():

    threads = [
        threading.Thread(target= init_connection, args= [socket])
        for socket in sockets
    ]

    for thread in threads:
        thread.start()
def init_connection(socket):

    client, address = socket.accept()

при запуске кода эта ошибка появляется

ConnectionAbortedError: [Errno 53] Software caused connection abort

ошибка возникает в инструкции thread.start() в функции init_threads()

Я не знаю, почему это происходит, и был бы очень признателен за любой Помогите. Я пытаюсь запустить несколько сокетных соединений параллельно, если это невозможно, я открыт для рекомендаций

1 Ответ

0 голосов
/ 18 июня 2020

решил это!

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

поэтому, когда вторичные потоки (потоки, которые запустила основная программа), все еще работают, попробуйте ссылаться на эти удаленные объекты, возникает ошибка

, решение для меня, казалось, добавляло бесконечное while l oop в основной метод. предотвращение завершения основного потока

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