Эмулятор Android (qemu) не разрешает определенные соединения TCP (RST, ACK как ответ на SYN)

1

Несмотря на то, что в эмуляторе работает Интернет, мое приложение, которое также работает в эмуляторе, не может подключиться к серверу в Интернете на порту 5222 через TCP. Я уверен, что на моем маршрутизаторе или на моем компьютере нет брандмауэра, так как я могу подключиться к этому ip: порту с моего компьютера.

Вот скриншот пакета, взятого на эмуляторе: http://i.stack.imgur.com/sIFFM.png

Трассировка пакетов на эмулированном устройстве показала, что на каждый пакет SYN на этот конкретный порт отвечает RST, ACK и соединение закрывается моим приложением с "ошибкой соединения".

Почему эмулятор блокирует (?) эти порты? Как я могу его изменить?

Теги:
android-emulator
qemu

2 ответа

1
Лучший ответ

Получил это. Как указано 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-соединения.

1

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

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

Дополнительную информацию см. в руководстве для разработчиков:

http://developer.android.com/guide/developing/tools/emulator.html#connecting

  • 0
    Обратите внимание, что рассматриваемое приложение работает в эмуляторе. Я сделаю это более ясным в вопросе.
  • 0
    @ Ниже приведен ответ о том, как подключиться к приложению в эмуляторе.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню