মাল্টিপ্লেয়ার নেটওয়ার্কিং

অনেক মাল্টিপ্লেয়ার নেটওয়ার্কিং প্রয়োজনে, অ্যান্ড্রয়েডের নেটওয়ার্ক ডিসকভার প্রোটোকল আপনার প্রয়োজনীয় সবকিছুই প্রদান করবে এবং প্রত্যাশা অনুযায়ী কাজ করবে। ChromeOS-এ উভয় দিকেই বিল্ট-ইন ব্রডকাস্ট ফরওয়ার্ডিং রয়েছে যাতে নিশ্চিত করা যায় যে আপনার গেমটি স্থানীয় নেটওয়ার্কের সমকক্ষদের কাছে পাঠানো ব্রডকাস্ট প্যাকেটের প্রতি সঠিকভাবে প্রতিক্রিয়া পাবে এবং স্থানীয় নেটওয়ার্কের অন্যান্য সমকক্ষদের দ্বারা প্রেরিত ব্রডকাস্ট প্যাকেটগুলি গ্রহণ করবে।

ChromeOS এর আর্কিটেকচার এবং নিরাপত্তা নিয়মের কারণে, একটি অ্যান্ড্রয়েড অ্যাপ যার ChromeOS ডিভাইসটি চলছে তার IPv4 ঠিকানা জানতে হবে, উদাহরণস্বরূপ, একই স্থানীয় নেটওয়ার্কের ভিতরে অবস্থিত নন-Chrome OS ক্লায়েন্টদের সাথে ক্লায়েন্ট-টু-ক্লায়েন্ট মাল্টিপ্লেয়ার গেম ব্রোকারেজ করতে ইচ্ছুক সার্ভারের সাথে ঠিকানাটি যোগাযোগ করার জন্য, কিছু অতিরিক্ত যুক্তি প্রয়োগ করতে হবে।

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 "হোল পাঞ্চিং" এর প্রয়োজন ছাড়াই। এই IPv4 সমাধান সম্পর্কে আরও তথ্যের জন্য, এই ক্রোমিয়াম সমস্যাটি দেখুন।

IPv6 নেটওয়ার্কে, Android ChromeOS থেকে আলাদাভাবে নিজস্ব নেটওয়ার্ক ঠিকানা গ্রহণ করে এবং স্থানীয় IPv6 নেটওয়ার্কে এই ঠিকানা থেকে সরাসরি সংযোগ স্থাপন করলে এমনভাবে কাজ করবে বলে আশা করা হচ্ছে যেন Android সরাসরি স্থানীয় IPv6 নেটওয়ার্কের সাথে সংযুক্ত।