Разъем TIMEOUT, когда телефон работает на 3G, и работает, когда на Wi-Fi. Почему?

Я программирую клиент-серверное приложение, мой клиент - телефон на базе Android, мой сервер - мой ноутбук.

Так что моя проблема в том, что это одна строка кода:

Socket connectionToServerSocket = new Socket(hostName, portNumber);

прекрасно работает, когда мой сотовый телефон подключается к Интернету через домашнее Wi-Fi-соединение, и просто отключается при подключении через 3G (сотового провайдера), например, он блокируется на некоторое время, а затем выдает исключение тайм-аута

Самое интересное, что я вижу (используя OS Monitor), что некоторые приложения подключены через очень общие порты, например, порт № 80, но переключение portNumber (а также порта, который слушает сервер) на 80 не делает 't помощь (например, это все еще истекло), и я пробовал много разных портов - тот же результат.

DNS работает нормально (например, он переводит логическую строку, которую я дал hostName на правильный IP), но он ничего не отправляет серверу... Я потерян, в чем может быть причина? Как я могу проверить и решить это?

3 ответа

Случай 1: Он работает, когда ваш ноутбук и ваш телефон подключен к Wi-Fi не так ли?

Попробуйте это один раз

случай 2:

  1. подключите свой телефон к 3G.
  2. включить горячую точку на телефоне.
  3. подключите ваш ноутбук к точке доступа вашего телефона.
  4. проверьте IP вашего ноутбука, если он изменился, замените его в объекте Socket. Socket connectionToServerSocket = new Socket(newIP, portNumber);
  5. Запустите свой проект.

Просто попробуйте это, как только вы получите то, что я пытаюсь сказать.

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

Надеюсь, это поможет:)

Я столкнулся с этой проблемой, а также делал подобное приложение.

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

Когда устройство подключено к WIFI, его запрос проходит через маршрутизатор для проверки IP-адресов, он находит IP-адрес вашего ноутбука и сохраняет запрос в DNS, потому что он уже может найти IP-адрес ноутбука. Ноутбук работает так же, он также находит IP-адрес клиента через маршрутизатор.

Однако, когда ваш телефон подключен к сети 3G, он не может точно знать, где находится IP-адрес вашего ноутбука. Вот почему он истекает: он переходит с вашего маршрутизатора на ближайший DNS (где он пытается определить правильный IP-адрес), если он не может найти домен или IP-адрес, который ему подходит, не удастся.

Некоторые шаги, чтобы это исправить.,,

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

  2. Затем перейдите на любой сайт, подобный этому, http://touch.whatsmyip.org/ на своем ноутбуке, чтобы получить IP-адрес вашего ноутбука. Сохраните это, чтобы добавить к своим клиентам настройку сокета.

  3. Для отладки до тех пор, пока ваш портативный компьютер не станет доступен для поиска DNS, перейдите в код своего клиента и добавьте его.

    Socket debugSocket = new Socket ("the.laptop.ip", 80);

Некоторые предупреждения:

  • В зависимости от вашего роутера ваш ip может меняться при перезагрузках
  • С переадресацией портов любой браузер с вашим ip, ex) 178.12.434.01 может зайти на персональный сервер вашего ноутбука

Будущие изменения:

  • Как только выделенный сервер запущен и зарегистрирован, зарегистрирован в домене, вы можете изменить вышеуказанный параметр ip на "your.domain.com", и за кулисами фактический IP-адрес вашего сервера будет найден через поиск DNS.

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

Другие вопросы по тегам