Jaringan multiplayer

Untuk banyak kebutuhan jaringan multiplayer, protokol Penemuan Jaringan Android akan menyediakan semua yang Anda butuhkan dan berfungsi seperti yang diharapkan. ChromeOS juga memiliki penerusan siaran bawaan di kedua arah untuk memastikan game Anda akan menerima respons dengan benar terhadap paket siaran yang dikirim ke peer di jaringan lokal, dan untuk menerima paket siaran yang dikirim oleh peer lain di jaringan lokal.

Karena arsitektur dan aturan keamanan ChromeOS, aplikasi Android yang perlu mengetahui alamat IPv4 perangkat ChromeOS tempat aplikasi tersebut berjalan, misalnya untuk mengomunikasikan alamat ke server yang ingin memediasi game multiplayer client-to-client dengan klien non-ChromeOS yang berada di dalam jaringan lokal yang sama, misalnya, perlu menerapkan beberapa logika tambahan.

Untuk mendapatkan alamat IPv4 yang ditetapkan ke jaringan prioritas tertinggi yang terhubung ke perangkat ChromeOS, periksa properti sistem Android vendor.arc.net.ipv4.host_address dan, jika perlu, vendor.arc.net.ipv4.host_gateway. Salah satu cara untuk melakukannya adalah:

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()
}

Traffic yang dikirim ke alamat IPv4 ini di jaringan lokal akan diteruskan ke aplikasi Android, tanpa memerlukan “hole punching” NAT tambahan. Untuk mengetahui informasi selengkapnya tentang solusi IPv4 ini, lihat masalah Chromium ini.

Di jaringan IPv6, Android menerima alamat jaringannya sendiri yang terpisah dari ChromeOS dan koneksi langsung di jaringan IPv6 lokal ke dan dari alamat ini diharapkan berfungsi seolah-olah Android terhubung langsung ke jaringan IPv6 lokal.