2011-04-13 3 views
2

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

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

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

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

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

ответ

0

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

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

+0

Ehm .. как/где я могу настроить имя хоста? – bretddog

+0

Вам нужно будет получить доменное имя от регистратора доменных имен, а затем настроить его на IP-адрес вашего компьютера. Go Daddy, например, продает их. – Jacob

+0

О, я вижу. У меня есть некоторые домены, поэтому, возможно, я мог бы настроить субдомен. Что мне делать с потенциальными проблемами брандмауэра клиентов? Получат ли они запрос на разрешение трафика, и как я могу обеспечить правильное имя программного обеспечения, которое будет отображаться в таких предупреждениях, если это возможно? – bretddog

0

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

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

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

0

Вы должны хостинг сервер TCP в демилитаризованной зоне http://en.wikipedia.org/wiki/DMZ_(computing) или настроить ваш маршрутизатор, чтобы сделать NAT (перенаправление портов) с внешней стороны к серверу http://en.wikipedia.org/wiki/Port_forwarding

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

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

Смежные вопросы