Может ли приложение Androip на Chromebook создать TCP-сервер сокетов, прослушивать соединения и подключаться к другому серверу сокетов в локальной сети?

У меня есть приложение для Android, которое создает TCP-сервер сокетов для прослушивания соединений из приложения Windows. И иногда он подключается к серверу сокетов в приложении Windows.

Он корректно работает на устройствах Android. Он также может принимать широковещательные пакеты. Однако это не работает при установке на Chromebook.

Он не может прослушивать какие-либо соединения, получать какие-либо пакеты или подключаться к серверу в приложении Windows.

Может ли кто-нибудь помочь мне объяснить, почему и дать мне некоторые решения для исправления?

С наилучшими пожеланиями.


person Thanh Dong    schedule 23.03.2020    source источник


Ответы (1)


Я понял, что такое сеть в Chromebook, и нашел Network Service Discovery в качестве решения здесь https://developer.android.com/topic/arc

Проверьте требования к сети

Chromebook запускает всю ОС Android в контейнере, похожем на Docker или LXC. Это означает, что Android не будет иметь прямого доступа к LAN-интерфейсу системы. Вместо этого трафик IPv4 будет проходить через внутренний уровень преобразования сетевых адресов (NAT), а одноадресный трафик IPv6 будет маршрутизироваться через дополнительный переход. Исходящие одноадресные соединения из приложения Android в Интернет должны в основном работать как есть; а вообще входящие соединения блокируются. Многоадресные или широковещательные пакеты с Android не будут пересылаться в локальную сеть через брандмауэр.

В качестве особого исключения из ограничения многоадресной рассылки Chrome OS запускает службу, которая перенаправляет трафик mDNS между Android и интерфейсом локальной сети, поэтому стандартные API обнаружения сетевых служб являются рекомендуемым способом обнаружения других устройств в сегменте локальной сети. Найдя устройство в локальной сети, приложение Android может использовать стандартные одноадресные сокеты TCP или UDP для связи с ним.

Подключения IPv4, исходящие от Android, будут использовать IPv4-адрес хоста Chrome OS. Внутри приложение для Android увидит частный IPv4-адрес, назначенный сетевому интерфейсу. Соединения IPv6, исходящие из Android, будут использовать другой адрес, отличный от хоста Chrome OS, поскольку контейнер Android будет иметь выделенный общедоступный IPv6-адрес.

person Thanh Dong    schedule 23.04.2020