RakNetty
1.0.0
RakNetty 是 Oculus RakNet 在 java 中的乾淨且現代的實作(連接埠)。
RakNet 是一個被許多專案使用的網路庫,包括著名的 Minecraft:基岩版和 Unity Engine。 RakNet 使用 UDP 作為其網路協議,與 TCP 相比,UDP 預設是無連線的,並且無法保證封包到達目的地。 RakNet 實作了多種演算法來確保資料包能夠以有序且可靠的方式傳遞。 RakNetty將協定和演算法移植到 java。
RakNetty是基於高效能非同步事件驅動框架Netty建構的。與使用Blocking IO的原始C++版本相比, 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:基岩版使用不同版本的 RakNet 並更改了一些常數。出於一般用途的目的,RakNetty 透過利用 Netty 的通道選項,支援以不同的方式覆蓋常數。
選項 | 描述 | 預設 RakNet | 基岩 |
---|---|---|---|
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 | 基岩 |
---|---|---|---|
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 );