2015-06-03 3 views
2

Я работаю над приложением, которое отправляет сообщения на другие телефоны. Вроде как чат-посланник. Как мое приложение должно работать, пользователь вводит IP-адрес и сообщение, и приложение отправляет сообщение на указанный IP-адрес. В настоящее время у меня есть сервер и клиент, работающие в одном приложении. Таким образом, любой телефон может подключаться к любому другому телефону, поскольку каждый из них имеет свой независимый сервер, к которому осуществляется доступ через IP-адрес устройства. Однако я не могу подключиться к IP-адресу, который не находится в моей локальной сети. Я хочу знать, как я могу заставить сервер получать сообщения от устройств, не подключенных к моей локальной сети?Как сделать IP-адрес моего устройства доступным из любого места?

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

+1

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

+1

Если вы хотите, чтобы кто-то нашел вас в вашей локальной сети, вам придется выставлять какую-то контактную информацию и настраивать маршрутизацию, NAT и любые другие меры безопасности/сети, которые у вас есть, чтобы пропустить их, никоим образом не обойти. –

+0

Итак, порт перенаправляет мой единственный вариант или это даже не будет возможно на Android? – Restnom

ответ

1

Ваш «сервис», который прослушивает входящие сообщения, должен был бы иметь адресный IP-адрес . Адрес в диапазоне, указанном ниже , называется частным и не может быть достигнут «глобально». Они являются частными для вашей локальной сети.

192.168.0.0 - 192.168.255.255 (65,536 IP-адрес)
172.16.0.0 - 172.31.255.255 (1048576 IP-адрес)
10.0.0.0 - 10.255.255.255 (16777216 IP-адрес)

Дальнейших более ваш «служебный» IP-адрес может быть за брандмауэром NAT, , что означает, что ваш «служебный» IP-адрес, который, как представляется, является общедоступным , на самом деле не является общедоступным. NAT - это IP-адрес, который переводится на другой IP-адрес. Это обычно происходит у провайдера интернет-услуг или оператора телефонной сети.

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

Каждый мобильный клиент может подключиться к этому серверу и получить идентификатор, возможно связанный с адресом электронной почты пользователей. После регистрации мобильный клиент может попросить сервер оцифровать некоторые сообщения для этого конкретного пользователя.

В качестве механизма доставки можно также использовать Google Cloud messaging, таким образом, можно было бы пробудить мобильные клиенты для сбора сообщения с сервера. Или сообщение может быть даже в сообщении push.

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

  • Нет связанных вопросов^_^