RakNetty هو تطبيق (منفذ) نظيف وحديث لـ RakNet من Oculus في Java.
RakNet هي مكتبة شبكات تستخدمها العديد من المشاريع، بما في ذلك لعبة Minecraft الشهيرة: Bedrock Edition وUnity Engine. تستخدم RakNet UDP كبروتوكول شبكي خاص بها، وهو غير متصل افتراضيًا ولا يتم ضمان وصول الحزم إلى الوجهة، مقارنةً بـ TCP. تطبق RakNet عددًا من الخوارزميات لضمان إمكانية تسليم الحزم بطريقة منظمة وموثوقة. يقوم RakNetty بنقل البروتوكول والخوارزميات إلى Java.
تم بناء RakNetty على أساس Netty، وهو إطار عمل غير متزامن عالي الأداء يعتمد على الأحداث. بالمقارنة مع إصدار c++ الأصلي الذي يستخدم Blocking IO، يتمتع RakNetty بمزايا Non-blocking IO لزيادة تحسين الأداء العام، والذي يتم تحقيقه عن طريق إرسال الحزم ليتم التعامل معها بواسطة سلاسل عمليات متعددة. وبالمقارنة، فإن الإصدار الأصلي من RakNet يتعامل أيضًا مع الحزم لجميع الاتصالات في موضوع واحد.
حاليًا، يعمل RakNetty ويدعم معظم ميزات RakNet، ولكن تم اختباره بشكل بسيط فقط. يتم تنظيم الرموز أيضًا في بنية تشبه Netty مع تحويل نمط Java بدلاً من نسخة بايت إلى بايت من إصدار c++ الأصلي.
< repositories >
< repository >
< id >nukkit-releases</ id >
< url >https://nukkit.org/nexus/repository/maven-releases/</ url >
</ repository >
</ repositories >
< dependency >
< groupId >org.nukkit</ groupId >
< artifactId >raknetty</ artifactId >
< version >1.0</ version >
</ dependency >
انظر مثال العميل
انظر مثال الخادم
تحدد RakNet عددًا من الثوابت في كودها الأصلي، مما يسمح للمطورين بتجاوزها من خلال إعادة تعريفها. Minecraft: Bedrock Edition يستخدم إصدارًا مختلفًا من RakNet ويغير بعض الثوابت. لغرض الاستخدام العام، يدعم RakNetty تجاوز الثوابت بطريقة مختلفة، من خلال الاستفادة من خيارات قناة Netty.
خيار | وصف | راك نت الافتراضي | حجر الأساس |
---|---|---|---|
RAKNET_GUID | دليل الخادم | عشوائي | عشوائي |
RAKNET_NUMBER_OF_INTERNAL_IDS | حجم قائمة العناوين في طلب الاتصال | 10 | 20 |
RAKNET_PROTOCOL_VERSION | نسخة من بروتوكول RakNet | 6 | 10 |
RAKNET_MAX_CONNECTIONS | عدد الاتصالات القصوى | خاص بالمستخدم | خاص بالمستخدم |
RAKNET_MAX_MTU_SIZE | الحد الأقصى لحجم MTU المسموح به | 1492 | 1400 |
RAKNET_OFFLINE_RESPONSE | استجابة دون اتصال عند تنفيذ الأمر ping | خيط | خادم MOTD |
الاستخدام:
ServerBootstrap boot ; // your own server bootstrap
boot . option ( RakServerChannelOption . RAKNET_GUID , 123456L )
. option ( RakServerChannelOption . RAKNET_NUMBER_OF_INTERNAL_IDS , 20 )
. option ( RakServerChannelOption . RAKNET_PROTOCOL_VERSION , 10 )
. option ( RakServerChannelOption . RAKNET_MAX_CONNECTIONS , 15 )
. option ( RakServerChannelOption . RAKNET_MAX_MTU_SIZE , 1400 )
. option ( RakServerChannelOption . RAKNET_OFFLINE_RESPONSE , new ExampleBedrockPingResponse ());
خيار | وصف | راك نت الافتراضي | حجر الأساس |
---|---|---|---|
RAKNET_GUID | دليل الخادم | عشوائي | عشوائي |
RAKNET_NUMBER_OF_INTERNAL_IDS | حجم قائمة العناوين في طلب الاتصال | 10 | 20 |
RAKNET_PROTOCOL_VERSION | نسخة من بروتوكول RakNet | 6 | 10 |
RAKNET_CONNECT_MTU_SIZES | الأحجام التجريبية للكشف عن حجم وحدة الإرسال الكبرى (MTU). | 1492، 1200، 576 | 1492، 1200، 576 |
RAKNET_CONNECT_ATTEMPTS | المحاولات التي يجب إجراؤها قبل فشل طلب الاتصال | 6 | 12 |
RAKNET_CONNECT_INTERVAL | الفاصل الزمني بين كل طلب اتصال | 1000 | 500 |
RAKNET_CONNECT_TIMEOUT | مهلة طلب الاتصال | 0 | 0 |
RAKNET_UNRELIABLE_TIMEOUT | مهلة الحزم غير الموثوقة التي سيتم التخلص منها | 0 | 0 |
RAKNET_TIMEOUT | مهلة الاتصال | 10000 | 10000 |
الاستخدام:
Bootstrap boot ; // your own bootstrap
boot . option ( RakChannelOption . RAKNET_GUID , 654321L )
. option ( RakChannelOption . RAKNET_NUMBER_OF_INTERNAL_IDS , 20 )
. option ( RakChannelOption . RAKNET_PROTOCOL_VERSION , 10 )
. option ( RakChannelOption . RAKNET_CONNECT_INTERVAL , 500 )
. option ( RakChannelOption . RAKNET_CONNECT_ATTEMPTS , 12 );