Как сделать сокетное соединение через интернет? - PullRequest
2 голосов
/ 13 апреля 2011

Я делаю две программы; «серверное» приложение (один экземпляр) и клиентское приложение (несколько экземпляров), которое подключается к серверному приложению. Между приложением сервера и клиентскими приложениями будет отправлено непрерывных (но слабых) данных , но между клиентскими приложениями не будет связи.

До сих пор я успешно тестировал это с открытыми сокетами между компьютерами в моей локальной сети. Это означает, что я использую IP-адреса, найденные в cmd> ipconfig. Серверное приложение использует TcpListener / TcpClient. Я действительно не знаю, является ли это лучшим соединением для использования, или есть другие (?), Но это все, что я узнал.

Что теперь требуется для работы через Интернет ? Я предполагаю, что отправлю запрос на подключение на внешний IP-адрес, но нужно ли мне вносить более сложные изменения в запросы?

А мне нужно сделать некоторые настройки в роутере? Если да, то какого типа?

Любые намеки будут оценены, как вы видите, я не очень знаком с этим.

Ответы [ 3 ]

0 голосов
/ 13 апреля 2011

Вы можете продолжать использовать сокеты. Чтобы упростить связь с сервером, используйте имя хоста вместо IP-адреса; таким образом, сервер может изменять IP-адреса без необходимости повторного развертывания клиентов.

Другая проблема, которую следует рассмотреть, - это брандмауэры. Вам нужно убедиться, что хост для серверного приложения разрешает входящие соединения с портом TCP, на котором он прослушивает, а также, что любой маршрутизатор, который находится позади, также разрешает входящий трафик на этот порт. Кроме того, клиенты могут иметь проблемы с подключением, если у них есть брандмауэры, блокирующие исходящий трафик.

0 голосов
/ 13 апреля 2011

Вы должны разместить свой tcp-сервер в демилитаризованной зоне http://en.wikipedia.org/wiki/DMZ_(computing) или настроить маршрутизатор для выполнения NAT (переадресация портов) извне на сервер http://en.wikipedia.org/wiki/Port_forwarding

Брандмауэр на маршрутизаторе должен разрешать подключение к необходимому порту.

Вам следует прочитать руководство по маршрутизатору, если вы не уверены, что делаете в настройках.

0 голосов
/ 13 апреля 2011

Вы можете использовать службу WCF вместо сокетов.Они имеют дуплексный режим и TCP / IP.

Затем вам понадобится компьютер со статическим IP-адресом, чтобы вы могли выставлять свои услуги через сеть.

Проверьте эту статью: http://keithelder.net/2008/01/17/exposing-a-wcf-service-with-multiple-bindings-and-endpoints/

...