Позвольте мне немного объяснить, какое приложение я делаю.
Я создаю центральный сервер UDP (должен быть UDP) для нескольких и одновременных клиентов, которые также «общаются» между ними.
Я делаю проверку на наличие адресов известных клиентов и создаю поток обработчика клиента, если «я не знаю» клиента. Иначе, поток получает данные, которые делают свою работу.
Новый поток получает ссылку на сокет и адрес вызывающего, поэтому они используют socket.sendTo с этим адресом и данными.
Проблема возникает, когда клиент закрывает своего клиента (Alt + F4), и кто-то говорит с ними, потому что сокет выдает ошибку 10054 «Сброс соединения сокета». Я думаю, не ожидается в UDP.
Метод talk в клиентских потоках также находится между тегами try & кроме, но все же является UDP-сервером «recvfrom», который вызывает исключение.
Я использую Python 2.5 (нужен код) и параметры сокета:
host = "0.0.0.0"
port = 10000
UDPSock = socket(AF_INET,SOCK_DGRAM)
UDPSock.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
UDPSock.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)
UDPSock.bind((host,port))
Есть несколько опций, которые позволяют мне делать то, что я хотел, или библиотека, которая решает эти проблемы?.
Или, если я делаю это неправильно ... есть способ сделать / эмулировать то же поведение, что и многопоточный TCP-сокет (создать новый поток обработчика клиента при принятии), но с UDP?
Спасибо за чтение;)