Python Server не может быть перезапущен, если клиент C # не закрыт - PullRequest
0 голосов
/ 12 октября 2018

Я создал Сервер с Сокетом в Python и клиент в C # с TCPClient.

Моя проблема: Когда Клиент подключен, и я закрываю Сервер, Сервер не может перезапуститься, потому что

    serversocket.bind((host, port))
OSError: [Errno 98] Address already in use

На моем клиенте c # у меня есть угроза, которая проверяет, есть ли у клиента соединение.Когда я закрываю сервер, я получаю сообщение, что клиент потерял соединение, и я запускаю:

public void Close()
    {
        client.Close();
        client.Client.Dispose();
        client = null;
    }

, это мой конструктор:

public HardwareCommunicator(string ip, int port)
    {
        client = new TcpClient(ip, port);
    }

Я уже тестирую с точкой останова.Клиент достигает void Close (), но я не могу перезапустить сервер, пока не закрою графический интерфейс клиента.

Что я могу сделать?

1 Ответ

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

Я нашел решение.Я добавил на свой сервер Python3

serversocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

Но у меня такое ощущение, что это просто быстрый и грязный метод!

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