Проблема с сокетом Python - PullRequest
4 голосов
/ 28 июня 2011

Я пытаюсь использовать сервер потокового сокета

self.server = SocketServer.ThreadingTCPServer( ( HOST, PORT ), MCRequestHandler )

и деструктор

def __del__( self ):
        self.server.shutdown();
        self.server.server_close()
        print( 'Server closed ! ' );

Когда я закрываю графический интерфейс, вызывается функция del , но если я хочу снова запустить программу, я получаю следующее сообщение об ошибке

socket.error: [Errno 98] Address already in use
Exception AttributeError: "'MCCommunication' object has no attribute 'server'" in <bound method MCCommunication.__del__ of <MCCommunication.MCCommunication object at 0x26867c0>> ignored

1 Ответ

3 голосов
/ 28 июня 2011

Создайте подкласс TCPServer и добавьте в него следующее:

class TCPServer(SocketServer.TCPServer):
allow_reuse_address = True 

В основном то же самое, что и setsockopt, но проще.

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