Я создал сервер с Socket в Python и клиент в С# с TCPClient.
Моя проблема: когда клиент подключен и я закрываю сервер, сервер не может перезагрузиться, потому что
serversocket.bind((host, port))
OSError: [Errno 98] Address already in use
В моем клиенте С# у меня есть Угроза, которая проверяет, имеет ли клиент еще коннект. Когда я закрываю сервер, я получаю сообщение, что клиент потерял соединение, и я запускаю:
public void Close()
{
client.Close();
client.Client.Dispose();
client = null;
}
это мой конструктор:
public HardwareCommunicator(string ip, int port)
{
client = new TcpClient(ip, port);
}
Я уже тестирую точку останова. Клиент достигает значения void Close(), но я не могу перезапустить сервер, прежде чем закрыть клиент Gui.
Что я могу сделать?
Я нашел решение. Я добавил на свой сервер Python3
serversocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
Но у меня такое ощущение, что это просто быстрый и грязный метод!