Как правильно связать сокет C # - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть серверное приложение на C #, которое выполняет код сервера. С другой стороны, есть приложение для Android, которое работает как клиент.

Я могу успешно установить соединение между этими двумя приложениями.

Моя проблема в том, что если серверное приложение закрывается без закрытия сокета сервера (сбой или остановка), сокет сервера не может быть снова привязан при перезапуске приложения (уже используется и теряет ссылку на сокет).

Кроме того, у меня есть кнопка для закрытия / открытия соединения. Например, я запускаю сервер на порту 5000, затем пытаюсь закрыть (Server.Close()).

Когда я перезагружаю сервер, я не могу связать его снова, поэтому я пропускаю эту часть и просто запускаю server.listen(). Но тогда мне нужно разобраться с ситуацией, если я изменил порт в настройках, прежде чем я сделаю server.listen() (необходимо связать в этом случае). Но что происходит с предыдущим сокетом? Каким-то образом первый сокет всегда открыт ... Если я вызываю serverSocket.shutdown, то если я получаю ошибку во время привязки после завершения работы (устранена ошибка).

Как мне правильно с этим обращаться:

  • STOP / RUN APP несколько раз
  • Перезапустить приложение после сбоя (возможно, сервер оставлен открытым, как долго я не знаю)
  • Смена порта пользователем в меню настроек.
...