เครือข่ายแบบผู้เล่นหลายคน

สำหรับความต้องการด้านเครือข่ายแบบผู้เล่นหลายคนส่วนใหญ่ โปรโตคอล Network Discover ของ Android ควรมีทุกสิ่งที่คุณต้องการและทำงานได้ตามที่คาดไว้ นอกจากนี้ ChromeOS ยังมีการส่งต่อการออกอากาศในตัวทั้ง 2 ทิศทางเพื่อให้แน่ใจว่าเกมจะได้รับการตอบกลับแพ็กเก็ตการออกอากาศที่ส่งไปยังอุปกรณ์อื่นๆ ในเครือข่ายท้องถิ่นอย่างถูกต้อง และเพื่อรับแพ็กเก็ตการออกอากาศที่ส่งโดยอุปกรณ์อื่นๆ ในเครือข่ายท้องถิ่น

เนื่องจากสถาปัตยกรรมและกฎความปลอดภัยของ ChromeOS แอป Android ที่จำเป็นต้องทราบที่อยู่ IPv4 ของอุปกรณ์ ChromeOS ที่แอปทำงานอยู่ เช่น เพื่อสื่อสารที่อยู่กับเซิร์ฟเวอร์ที่ต้องการเป็นตัวกลางในการเล่นเกมแบบผู้เล่นหลายคนแบบไคลเอ็นต์ต่อไคลเอ็นต์กับไคลเอ็นต์ที่ไม่ใช่ ChromeOS ซึ่งอยู่ในเครือข่ายภายในเดียวกัน จะต้องใช้ตรรกะเพิ่มเติม

หากต้องการดูที่อยู่ IPv4 ที่กำหนดให้กับเครือข่ายที่มีลำดับความสำคัญสูงสุดซึ่งอุปกรณ์ ChromeOS เชื่อมต่ออยู่ ให้ตรวจสอบพร็อพเพอร์ตี้ระบบ Android vendor.arc.net.ipv4.host_address และหากจำเป็น ให้ตรวจสอบ vendor.arc.net.ipv4.host_gateway วิธีหนึ่งในการทำเช่นนี้คือ

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

ระบบจะส่งต่อการรับส่งข้อมูลที่ส่งไปยังที่อยู่ IPv4 นี้ในเครือข่ายภายในไปยังแอป Android โดยไม่จำเป็นต้องใช้ NAT "hole punching" เพิ่มเติม โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีแก้ปัญหา IPv4 นี้ที่ปัญหานี้ใน Chromium

ในเครือข่าย IPv6 ระบบ Android จะได้รับที่อยู่เครือข่ายของตัวเองแยกจาก ChromeOS และการเชื่อมต่อโดยตรงในเครือข่าย IPv6 ในพื้นที่ไปยังและจากที่อยู่นี้จะทำงานได้ราวกับว่า Android เชื่อมต่อกับเครือข่าย IPv6 ในพื้นที่โดยตรง