대부분의 멀티플레이어 네트워킹 요구사항의 경우 Android의 네트워크 검색 프로토콜이 필요한 모든 것을 제공하고 예상대로 작동합니다. 또한 ChromeOS에는 양방향 브로드캐스트 전달 기능이 내장되어 있어 게임이 로컬 네트워크의 피어에게 전송된 브로드캐스트 패킷에 대한 응답을 올바르게 수신하고 로컬 네트워크의 다른 피어가 전송한 브로드캐스트 패킷을 수신할 수 있습니다.
ChromeOS의 아키텍처와 보안 규칙으로 인해 실행 중인 ChromeOS 기기의 IPv4 주소를 알아야 하는 Android 앱(예: 동일한 로컬 네트워크 내에 있는 비 ChromeOS 클라이언트와의 클라이언트 간 멀티플레이어 게임을 중개하려는 서버에 주소를 전달하기 위해)은 몇 가지 추가 로직을 구현해야 합니다.
ChromeOS 기기가 연결된 우선순위가 가장 높은 네트워크에 할당된 IPv4 주소를 가져오려면 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 주소로 전송된 트래픽은 추가 NAT '홀 펀칭' 없이 Android 앱으로 전달됩니다. 이 IPv4 해결 방법에 관한 자세한 내용은 이 Chromium 문제를 참고하세요.
IPv6 네트워크에서 Android는 ChromeOS와 별도의 자체 네트워크 주소를 수신하며 이 주소로의 로컬 IPv6 네트워크에서의 직접 연결은 Android가 로컬 IPv6 네트워크에 직접 연결된 것처럼 작동할 것으로 예상됩니다.