У меня есть серверное приложение на C #, которое выполняет код сервера. С другой стороны, есть приложение для Android, которое работает как клиент.
Я могу успешно установить соединение между этими двумя приложениями.
Моя проблема в том, что если серверное приложение закрывается без закрытия сокета сервера (сбой или остановка), сокет сервера не может быть снова привязан при перезапуске приложения (уже используется и теряет ссылку на сокет).
Кроме того, у меня есть кнопка для закрытия / открытия соединения. Например, я запускаю сервер на порту 5000, затем пытаюсь закрыть (Server.Close()
).
Когда я перезагружаю сервер, я не могу связать его снова, поэтому я пропускаю эту часть и просто запускаю server.listen()
. Но тогда мне нужно разобраться с ситуацией, если я изменил порт в настройках, прежде чем я сделаю server.listen()
(необходимо связать в этом случае). Но что происходит с предыдущим сокетом? Каким-то образом первый сокет всегда открыт ... Если я вызываю serverSocket.shutdown, то если я получаю ошибку во время привязки после завершения работы (устранена ошибка).
Как мне правильно с этим обращаться:
- STOP / RUN APP несколько раз
- Перезапустить приложение после сбоя (возможно, сервер оставлен открытым, как долго я не знаю)
- Смена порта пользователем в меню настроек.