Несмотря на то, что в эмуляторе работает Интернет, мое приложение, которое также работает в эмуляторе, не может подключиться к серверу в Интернете на порту 5222 через TCP. Я уверен, что на моем маршрутизаторе или на моем компьютере нет брандмауэра, так как я могу подключиться к этому ip: порту с моего компьютера.
Вот скриншот пакета, взятого на эмуляторе: http://i.stack.imgur.com/sIFFM.png
Трассировка пакетов на эмулированном устройстве показала, что на каждый пакет SYN на этот конкретный порт отвечает RST, ACK и соединение закрывается моим приложением с "ошибкой соединения".
Почему эмулятор блокирует (?) эти порты? Как я могу его изменить?
Получил это. Как указано http://developer.android.com/guide/developing/tools/emulator.html#proxy, прокси-сервер, заданный в переменной окружения http_proxy, будет использоваться для всех TCP-соединений. Но мой прокси настроен на использование только определенных TCP-портов.
unset $http_proxy
или используйте
emulator -http-proxy none
( "none" не является правильным прокси, поэтому он даст вам сообщение об ошибке. Но по крайней мере переменная среды не обрабатывается)
PS:
Если команда -http-proxy не предоставляется, эмулятор ищет переменную окружения http_proxy и автоматически использует любое значение, соответствующее формату, описанному выше.
Google, это безумие. Я установил переменную среды http_proxy, потому что я не трафик http (s), чтобы пройти через этот прокси. Не все TCP-соединения.
Эмулятор запускается в собственной сети, поэтому, если вы хотите общаться через разные порты, вам необходимо правильно настроить перенаправление для нестандартных портов.
Если вы хотите, чтобы внешние приложения подключались к вашему приложению, запущенному в эмуляторе, вам необходимо настроить переадресацию, чтобы внешнее приложение подключилось к порту на вашей машине разработки, и эмулятор пересылает его на 10.0.2.15 который является адресом эмуляторов.
Дополнительную информацию см. в руководстве для разработчиков:
http://developer.android.com/guide/developing/tools/emulator.html#connecting