W przypadku wielu potrzeb związanych z siecią w grach wieloosobowych protokoły Android Network Discover powinny zapewnić wszystko, czego potrzebujesz, i działać zgodnie z oczekiwaniami. ChromeOS ma też wbudowane przekazywanie transmisji w obu kierunkach, dzięki czemu gra będzie prawidłowo odbierać odpowiedzi na pakiety transmisji wysyłane do innych urządzeń w sieci lokalnej, a także pakiety transmisji wysyłane przez inne urządzenia w sieci lokalnej.
Ze względu na architekturę i zasady bezpieczeństwa ChromeOS aplikacja na Androida, która musi znać adres IPv4 urządzenia z ChromeOS, na którym jest uruchomiona (np. aby przekazać adres serwerowi, który chce pośredniczyć w grze wieloosobowej typu klient-klient z klientami innymi niż ChromeOS znajdującymi się w tej samej sieci lokalnej), będzie musiała zaimplementować dodatkową logikę.
Aby uzyskać adres IPv4 przypisany do sieci o najwyższym priorytecie, z którą połączone jest urządzenie z ChromeOS, sprawdź właściwość systemu Android vendor.arc.net.ipv4.host_address i w razie potrzeby vendor.arc.net.ipv4.host_gateway. Możesz to zrobić w ten sposób:
fun getChromeOsIpAddress() : String { val process = ProcessBuilder().command("/system/bin/getprop", "vendor.arc.net.ipv4.host_address").start() val ipAddress = readInput(process.inputStream) return ipAddress } fun getChromeOsIpGateway() : String { val process = ProcessBuilder().command("/system/bin/getprop", "vendor.arc.net.ipv4.host_gateway").start() val gatewayAddress = readInput(process.inputStream) return gatewayAddress } fun readInput(inputStream: InputStream) : String { val bufferedReader = BufferedReader(InputStreamReader(inputStream)) val stringBuilder = StringBuilder() var line: String? = null while (bufferedReader.readLine().also({ line = it}) != null) { stringBuilder.append(line).append('\n') } return stringBuilder.toString() }
Ruch wysyłany na ten adres IPv4 w sieci lokalnej będzie przekazywany do aplikacji na Androida bez konieczności wykonywania dodatkowego „przebijania” NAT. Więcej informacji o tym obejściu związanym z adresem IPv4 znajdziesz w tym artykule o problemie w Chromium.
W sieciach IPv6 Android otrzymuje własny adres sieciowy, oddzielny od ChromeOS. Bezpośrednie połączenia w lokalnej sieci IPv6 z tym adresem i do niego powinny działać tak, jakby Android był bezpośrednio połączony z lokalną siecią IPv6.