Клиент-серверное (сервисное) приложение, подключающееся локально, но не по сети - PullRequest
0 голосов
/ 12 июня 2018

Я создал серверную программу Windows на C #, которая будет получать сообщения с данными от последовательного порта, а затем отправлять эти сообщения любым клиентам, подключенным к серверу.Я также разработал клиентскую программу (форму Windows) на языке c #.

Первоначально серверная программа была разработана как консольное приложение, чтобы упростить разработку.Хотя сервер работал как консольное приложение, соединения с клиентами работали хорошо, я мог запустить клиент на том же ПК, что и сервер, а также подключить клиента на ноутбуке, подключенном к той же сети.

СоединениеМетод таков: -client запускает -client-широковещательные рассылки (udp) на определенный порт -server отвечает на широковещательную рассылку UDP -client инициирует TCP-соединение с сервером, используя IP-адрес, полученный из ответа UDP

С момента изменениясервер из консольного приложения в службу Windows. Я больше не могу подключить клиентскую программу, работающую на ноутбуке, к серверу, используя этот метод.Клиентская программа, работающая на той же машине, что и сервер, успешно подключается.Может кто-нибудь дать совет, что расследовать?

1 Ответ

0 голосов
/ 21 июня 2018

Чтобы решить эту проблему, я добавил новое правило в настройках брандмауэра компьютера, на котором запущено приложение службы сервера.Я разрешил порт, используемый во входящих соединениях, и это решило проблему для меня.

Я также изменил процедуру обнаружения сети:

  1. Сервер каждую секунду передает на порт (UDP)
  2. Клиент ожидает широковещательный пакет от сервера
  3. Клиент устанавливает TCP-соединение с сервером, используя IP-адрес, полученный из широковещательного пакета
...