Действуя как сервер вне локальной сети - PullRequest
1 голос
/ 31 декабря 2011

В настоящее время я пишу одноранговое приложение для чата, чтобы общаться по всему миру, но моя проблема в том, что я не могу подключиться () к другому компьютеру вне моей локальной сети, потому что, хотя у меня есть общедоступный IP-адрес моего друзья и, если необходимо, я могу получить их частный IP-адрес, как я могу подключиться к их ПК, поскольку общедоступный IP-адрес - это адрес маршрутизатора, а не компьютера, и я могу указать только один адрес (публичный или частный). Итак, как я могу отправить сообщение на конкретный компьютер, а не на маршрутизатор без необходимости его настройки? Я знаю, что это возможно, потому что в противном случае, если вы запросили веб-страницу, все компьютеры в вашей локальной сети могут получить вашу личную информацию (в проводной схеме, поскольку в Wi-Fi это явно возможно). Буду признателен за любую помощь, извините за мой плохой английский: D.

Ответы [ 4 ]

1 голос
/ 31 декабря 2011

Есть две возможности:

1 Читайте здесь: http://en.wikipedia.org/wiki/STUN

2 Перейти на IPv6! ; -)

1 голос
/ 31 декабря 2011

На самом деле частный IP-адрес компьютеров на другой стороне маршрутизатора вам не поможет. В этих ситуациях, если они инициируют соединение с вами, тогда у вас все в порядке, поскольку вы можете ответить на это соединение.

Если вы хотите инициировать соединение с ними, вы должны подключить его к своему общедоступному IP-адресу, и у них должен быть настроен маршрутизатор для сопоставления входящего запроса (на любом порту) с правильным IP-адресом. в их сети.

0 голосов
/ 12 февраля 2012

Идеальным решением является использование uPNP . Это позволяет вашему приложению общаться с маршрутизаторами в текущей сети и просить их пересылать вам соответствующие сообщения. Это затем делает дыру в брандмауэре, которая позволяет вашему приложению (на другом ПК) подключаться.

Предполагая, что оба приложения делают это, любой конец может инициировать соединение. Если приложение имеет только один конец, то ДРУГОЙ конец должен инициировать соединение.

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

0 голосов
/ 31 декабря 2011

Во-первых, вы должны быть уверены, что компьютер, к которому вы пытаетесь подключиться, прослушивает определенный порт (тот же, к которому вы пытаетесь подключиться).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...