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

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

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

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

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

С уважением.

1 Ответ

0 голосов
/ 23 апреля 2020

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

Проверка сетевых требований

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

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

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

...