RakNetty adalah implementasi (port) RakNet Oculus yang bersih dan modern di java.
RakNet adalah perpustakaan jaringan yang digunakan oleh banyak proyek, termasuk Minecraft: Bedrock Edition dan Unity Engine yang terkenal. RakNet menggunakan UDP sebagai protokol jaringannya, yang secara default tidak memiliki koneksi dan paket tidak dijamin mencapai tujuan, dibandingkan dengan TCP. RakNet mengimplementasikan sejumlah algoritma untuk memastikan bahwa paket dapat dikirimkan secara teratur dan dapat diandalkan. RakNetty mem-porting protokol dan algoritma ke java.
RakNetty dibangun berdasarkan Netty, kerangka kerja berbasis peristiwa asinkron berkinerja tinggi. Dibandingkan dengan versi c++ asli yang menggunakan Blocking IO, RakNetty memiliki keunggulan IO Non-blocking untuk lebih meningkatkan kinerja secara keseluruhan, yang dicapai dengan mengirimkan paket untuk ditangani oleh banyak thread. Sebagai perbandingan, RakNet versi asli juga menangani paket untuk semua koneksi dalam satu thread.
Saat ini, RakNetty berfungsi dan mendukung sebagian besar fitur RakNet, namun hanya diuji secara sepele. Kode juga disusun dalam struktur mirip Netty dengan konversi gaya Java, bukan salinan byte-ke-byte dari versi c++ asli.
< 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 >
Lihat Contoh Klien
Lihat Contoh Server
RakNet mendefinisikan sejumlah konstanta dalam kode aslinya, yang memungkinkan pengembang untuk menggantinya dengan mendefinisikan ulang. Minecraft: Bedrock Edition menggunakan versi RakNet yang berbeda dan mengubah beberapa konstanta. Untuk tujuan penggunaan umum, RakNetty mendukung penggantian konstanta dengan cara yang berbeda, dengan memanfaatkan Opsi Saluran Netty.
Pilihan | Keterangan | RakNet bawaan | Batuan dasar |
---|---|---|---|
RAKNET_GUID | Panduan server | Acak | Acak |
RAKNET_NUMBER_OF_INTERNAL_IDS | Ukuran daftar alamat dalam permintaan koneksi | 10 | 20 |
RAKNET_PROTOCOL_VERSION | Versi protokol RakNet | 6 | 10 |
RAKNET_MAX_CONNECTIONS | Jumlah koneksi maksimum | Khusus pengguna | Khusus pengguna |
RAKNET_MAX_MTU_SIZE | Ukuran MTU maksimum yang diijinkan | 1492 | 1400 |
RAKNET_OFFLINE_RESPONSE | Respon offline saat melakukan ping | Rangkaian | Server MOTD |
Penggunaan:
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 ());
Pilihan | Keterangan | RakNet bawaan | Batuan dasar |
---|---|---|---|
RAKNET_GUID | Panduan server | Acak | Acak |
RAKNET_NUMBER_OF_INTERNAL_IDS | Ukuran daftar alamat dalam permintaan koneksi | 10 | 20 |
RAKNET_PROTOCOL_VERSION | Versi protokol RakNet | 6 | 10 |
RAKNET_CONNECT_MTU_SIZES | Ukuran untuk uji coba untuk mendeteksi ukuran MTU | 1492, 1200, 576 | 1492, 1200, 576 |
RAKNET_CONNECT_ATTEMPTS | Upaya yang dilakukan sebelum permintaan koneksi gagal | 6 | 12 |
RAKNET_CONNECT_INTERVAL | Interval antara setiap permintaan koneksi | 1000 | 500 |
RAKNET_CONNECT_TIMEOUT | Batas waktu permintaan koneksi | 0 | 0 |
RAKNET_UNRELIABLE_TIMEOUT | Batas waktu paket yang tidak dapat diandalkan untuk dibuang | 0 | 0 |
RAKNET_TIMEOUT | Batas waktu koneksi | 10.000 | 10.000 |
Penggunaan:
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 );