Android-приложение, которое подключается к серверному порту 8080.

Поэтому в свободное время я разрабатываю приложения для Android для развлечения. Это приложение открывает соединение с моим домашним сервером, на котором запущена программа Java, выполняет некоторые вычисления и отправляет ответ. Проблема в том, что я не хочу использовать порт 80. Если сотовый телефон подключен к WiFi, я могу подключиться, используя любой порт, который мне нужен, скажем, 8080. Это работает с любым WiFi-соединением, даже за пределами моей домашней сети. Однако переключитесь на 4G, и соединение не будет установлено.

СЕРВЕР:8080

  • Телефон по WiFi(ЛЮБОЙ) - Работает
  • Телефон на 4G - не работает



СЕРВЕР:80

  • Телефон на WiFi(ЛЮБОЙ) - Работает
  • Телефон на 4G - Работает


Я переключил свой сервер на прослушивание порта 80, а мое приложение на подключение через тот же порт, и теперь соединение работает как на 4G, так и на WiFi.

Есть ли что-то, чего мне не хватает, чтобы заставить его работать на необычном порту?

Или это ограничение 4G соединений.

Спасибо


person Tim Van Prooyen    schedule 09.04.2015    source источник
comment
Ваша история и сценарий не завершены. Он пропускает используемый IP-адрес.   -  person greenapps    schedule 09.04.2015
comment
Is there something I am missing to make it work on an uncommon port?. Да.   -  person greenapps    schedule 10.04.2015


Ответы (2)


Я могу заверить вас, что это не проблема с 4G, это просто IP-подключение. Порты являются частью UDP/TCP и являются просто «данными» для IP-сети.

Однако возможно, что у вашего провайдера сотовой связи есть брандмауэр, который блокирует трафик на определенные порты. Общедоступный веб-сайт PortQuiz прослушивает все порты. С помощью браузера на телефоне попробуйте подключиться к разным портам и посмотрите, что получилось, а что нет.

http://portquiz.net:8080 
http://portquiz.net:8 
http://portquiz.net:666 

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

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

person Brian White    schedule 09.04.2015
comment
Спасибо Брайан за ваш ответ и указатели. Я смог подключиться через 4G и порт 8080 и получил ответ от моего сервера в браузере моего телефона. Мне нужно будет изучить свое TCP-соединение в своем приложении и посмотреть, смогу ли я сделать что-то другое. - person Tim Van Prooyen; 11.04.2015
comment
Я должен сказать ... Я не понимаю, почему вы можете подключиться к порту 80, а не к 8080, тем более что он работает для вас по WiFi. В номере порта нет ничего особенного. Возможно, вам следует включить некоторый код и adb log вывод. - person Brian White; 11.04.2015
comment
@TimVanProoyen - Можете ли вы поделиться полученным кодом ответа - это может помочь объяснить проблему. - person Mick; 20.05.2015

У меня была точно такая же проблема - службы промежуточного программного обеспечения, работающие на «нестандартных» портах, таких как 8081, 8082, 8997, .. и, ради меня, я не мог получить к ним доступ с моего телефона, но только ЕСЛИ у меня было был подключен к сотовой сети. Я продолжал получать 504, тайм-аут шлюза.

Я запустил tcpdump на своем Linux-сервере, где я запускал свои микросервисы, и даже не видел входящего трафика, поэтому я знал, что проблема должна быть где-то до этого.

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

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

person MrKespr    schedule 04.05.2017