Pour de nombreux besoins de mise en réseau multijoueur, les protocoles Network Discover d'Android devraient vous fournir tout ce dont vous avez besoin et fonctionner comme prévu. ChromeOS dispose également d'une fonctionnalité de transfert de diffusion intégrée dans les deux sens pour garantir que votre jeu recevra correctement les réponses aux paquets de diffusion envoyés aux pairs sur le réseau local, et pour recevoir les paquets de diffusion envoyés par d'autres pairs sur le réseau local.
En raison de l'architecture et des règles de sécurité de ChromeOS, une application Android qui a besoin de connaître l'adresse IPv4 de l'appareil ChromeOS sur lequel elle s'exécute (par exemple, pour communiquer l'adresse à un serveur qui souhaite servir d'intermédiaire pour un jeu multijoueur client-à-client avec des clients non ChromeOS situés sur le même réseau local) devra implémenter une logique supplémentaire.
Pour obtenir l'adresse IPv4 attribuée au réseau de priorité la plus élevée auquel l'appareil ChromeOS est connecté, examinez la propriété système Android vendor.arc.net.ipv4.host_address et, si nécessaire, vendor.arc.net.ipv4.host_gateway. Voici une façon de procéder :
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() }
Le trafic envoyé à cette adresse IPv4 sur le réseau local sera transféré à l'application Android, sans qu'il soit nécessaire d'effectuer un "trou" NAT supplémentaire. Pour en savoir plus sur cette solution de contournement IPv4, consultez ce problème Chromium.
Sur les réseaux IPv6, Android reçoit sa propre adresse réseau distincte de ChromeOS. Les connexions directes sur le réseau IPv6 local vers et depuis cette adresse devraient fonctionner comme si Android était directement connecté au réseau IPv6 local.