Связь через WAN - PullRequest
       43

Связь через WAN

1 голос
/ 01 сентября 2010

Я хочу создать приложение клиент-сервер на C #, а не только в локальной сети.Там все просто: TcpListener, TcpClient и т. Д.

Я хочу сделать что-то вроде этого, например: На моем компе есть сервер, который ждет соединения.У кого-то в другой сети есть клиент.Он начинает соединение, но ... где ... что такое IP сервера?Он видит только ip роутера.

Есть идеи?:)

РЕДАКТИРОВАТЬ

Большой проблемой также является двойной NAT

Ответы [ 3 ]

1 голос
/ 01 сентября 2010

Ваш вопрос не объясняет весь сценарий ... но с моим пониманием проблемы я могу предложить следующий ответ: В зависимости от местоположения целевой клиентской базы (поддержка корпоративных сетей или НЕ), вы можете использовать различные варианты маршрутизации, такие как UPnP , STUNT или IPv6 , или некоторые другие Опции обхода NAT, чтобы вы могли информировать клиента о том, где находится слушатель. Всегда должен быть центральный сервер реестра, которому слушатель будет сообщать свое местонахождение и режим связи, разрешенный в его среде. Использование сервера XMPP было бы простым вариантом для таких целей, что решает большинство таких проблем. Как только клиент запрашивает информацию о местонахождении слушателя с сервера обнаружения, он может напрямую подключиться к слушателю.

1 голос
/ 01 сентября 2010

Вы по-прежнему используете один и тот же TcpListener и TcpClient (если хотите сделать этот низкий уровень).

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

0 голосов
/ 01 сентября 2010

Звучит так, будто вы просто хотите настроить переадресацию портов на вашем маршрутизаторе.Когда входящее соединение установлено на конкретном порту, к которому подключается клиент, маршрутизатор должен перенаправить соединение на компьютер, который вы указали в локальной сети.(Обычно IP, как 192.168.xx).Это также должен быть IP-адрес, который ваш TcpListener прослушивает для соединений.

Вы можете попробовать portforward.com , если вам нужна помощь в настройке его для конкретного маршрутизатора.

...