Мое приложение для Android, использующее мой компьютер в качестве сервера, не работает, когда мой телефон Android подключен к сети за пределами моей локальной сети

#android #http #netbeans #server #ip

#Android #http #netbeans #сервер #ip

Вопрос:

Я разработал приложение для Android в android studio и Netbeans. У меня нет сервера или виртуальной машины, чтобы установить все, что необходимо для запуска приложения. Итак, я использую свой компьютер в качестве сервера. Код для сервера находится в Netbeans, где используется glassfish. Я использовал свой частный IP-адрес таким образом в Android studio:

// AsyncTask для входа

последняя статическая строка url = «http://192.168.1.32:8080/app_server/Controller?action=signIn «;

app_server — это веб-проект netbeans. Таким образом, он работает нормально, только если мой телефон Android подключен к моему Wi-Fi.

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

База данных находится на локальном хосте, порт 3306 (если это имеет значение)

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

Спасибо и извините, если я спрашиваю что-то тривиальное.

Комментарии:

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

2. По сути, любой IP-адрес, начинающийся с 192.168, 172.16-172.31 или 10. зарезервированы для локальных вычислительных сетей и недоступны извне. Вы можете получить доступ к внешней стороне таким образом через NAT, который представляет собой устройство с общедоступным IP-адресом, которое будет пересылать данные от вас и притворяться, что они получены от него, и отправлять их обратно правильному получателю внутри. Большинство домашних маршрутизаторов имеют встроенный NAT. Но вы не можете использовать компьютер за одним из них в качестве сервера, потому что нет способа обратиться к нему — если вы не откроете дыру в NAT и не сообщите, что весь трафик по порту X переходит на IP Y

3. Кроме того, пожалуйста, обратите внимание, что ваш IP-адрес, полученный через DNS для вашего маршрутизатора, может измениться в любое время без предупреждения, что приведет к поломке вашего приложения, даже если вы проделаете дыру. Так что в принципе — если вам нужен доступ к нему через Интернет, самое время перейти на реальный сервер в AWS или тому подобном.

4. У вас есть учетная запись хостинга веб-сайта? Многие из этих учетных записей позволят вам устанавливать веб-приложения, подобные описанному вами, и плата за такую учетную запись, вероятно, составляет менее 10 долларов в месяц. Суть в том, что вам нужно, чтобы ваше веб-приложение было подключено к Интернету, чтобы с ним можно было связаться по телефону через 3 / 4G

5. Спасибо за ваши быстрые ответы. Итак, вы говорите мне, что не стоит пытаться использовать мой компьютер в качестве сервера для описанного приложения. Но это как-то достижимо, верно? Итак, пока я не перейду на реальный сервер, чтобы опубликовать приложение, я хотел бы иметь возможность продемонстрировать приложение кому-нибудь. Есть ли способ продемонстрировать кому-нибудь описанное приложение, например, используя virtual box (или что-то еще)?