2011-12-30 4 views
1

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

+0

Что именно конкретный вопрос? Простейшая система чата, о которой я мог думать, будет использовать сообщения или сообщения HTML через веб-службу для клиентов, работающих в браузере. Если вы делаете толстый клиент и хотите общаться с другими клиентами, вы можете использовать сокеты tcp/ip. – AJG85

+0

Да, я думал об этой возможности, так как я получаю список моих друзей от получения на PHP на моем сервере, но мне жаль, что я не могу общаться с ними в стиле P2P, полностью анонимно, кроме как от входа и выхода из системы. – chubakueno

+0

Вы можете использовать протокол P2P, такой как Bittorrent, достаточно легко, если он будет доступен на других машинах. Я не могу думать ни о какой машине, у которой нет tcp/ip или браузера. – AJG85

ответ

1

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

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

2 Go для IPv6! ;-)

+0

У IPv6 есть «один IP на ПК»? – chubakueno

+1

, если да, я мог бы пойти и удалить весь свой код TCP/IP прямо здесь: D – chubakueno

+0

@chubakueno: По крайней мере, число возможных адресов IPv6 достаточно велико, чтобы больше не использовать NAT. Есть так много, что вы можете назначить официальный IP-адрес даже для вашей кофемашины. – alk

1

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

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

+0

Так что я не могу начать соединение с другим компьютером, если оба находятся за маршрутизатором ?. – chubakueno

+0

Не имеет значения, где находится инициирующий компьютер (при условии, что маршрутизатор/межсетевой экран отключит соединение), но на целевом компьютере, если за маршрутизатором, должен быть настроен маршрутизатор правильно. Невозможно «добраться до маршрутизатора», чтобы добраться до компьютера. –

+1

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

0

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

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

+0

да, проблема в том, что я хочу полностью анонимный чат, кроме регистрации и выхода из системы (где вы подключаетесь к базе данных и загружаете свою личную информацию). Но если я не могу сделать это P2P, все в порядке. – chubakueno

+1

Это противоречивое утверждение ;-) Требование логинов и базы данных личной информации - это полная противоположность анонимности. – AJG85

+0

Точнее, я хочу, чтобы мой сервер никогда не знал, что говорят кто-то и ее gf: D – chubakueno

0

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

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

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

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