Эмулятор Android отправляет, но не получает TCP

Почему эмулятор Android подключается к серверу сокетов, работающему на моем ПК, но не получает никаких сообщений, которые отправляются обратно по той же линии?

Приложение для Android успешно подключается к моему серверу сокетов С# через 192.168.1.33 порт 2012, и сообщения могут без проблем передаваться с Android на сервер. Используя то же соединение с сокетом, я отправляю сообщение через сокет на андроид, но сообщение не получено на стороне андроида.

Я пробовал различные комбинации IP-адресов для прослушивания/подключения (10.0.2.2, 10.0.2.15), как советовали в другом месте, и по какой-то причине подключение к 127.0.0.1 даже не позволяет подключиться к моему серверу сокетов C# по адресу все.

Я попытался переадресовать порт на Android, используя:

    Telnet o localhost 5554
    redir add tcp:2012:2012

так что порт 2012 на моем ПК сопоставляется с портом 2012 на самом эмуляторе, но это не решает проблему.

Информация о том, какой правильный IP-адрес и порт использовать (наряду с переадресацией портов), сбивает с толку ... кто-нибудь понимает, как заставить это работать?

Примечание. сообщения отправляются туда и обратно между моим клиентским и серверным приложениями C# без проблем. Это не работает только с андроидом, выступающим в роли клиента.


person Shane    schedule 17.12.2012    source источник


Ответы (1)


Решение не имело ничего общего с подключением или портами. Проблема была с данными, которые я отправлял обратно на устройство Android.

Символ новой строки требуется для сокета, чтобы сбросить информацию на устройство:

    socket.Send(message + "\n");
person Shane    schedule 18.12.2012