rust-raknet
RakNet Protocol implementation by Rust.
Raknet is a reliable udp transport protocol that is often used for communication between game clients and servers. This project is an incomplete implementation of the protocol.
Reference : http://www.jenkinssoftware.com/raknet/manual/index.html
This project is not affiliated with Jenkins Software LLC nor RakNet.
Features
- Async
- MIT License
- Pure Rust implementation
- Selective Retransmission (TCP/Full Retransmission)
- Non-delayed ACK (TCP/Delayed ACK)
- RTO Not Doubled (TCP/RTO Doubled)
- Linux/Windows/Mac/BSD support
- Compatible with Minecraft 1.18.x
Get Started
# Cargo.toml
[dependencies]
rust-raknet = "0.5.0"
Reliability
- unreliable
- unreliable sequenced
- reliable
- reliable ordered
- reliable sequenced
Example
//server
async fn serve(){
let mut listener = RaknetListener::bind("127.0.0.1:19132".parse().unwrap()).await.unwrap();
listener.listen().await;
loop{
let mut socket = listener.accept().await.unwrap();
let buf = socket.recv().await.unwrap();
if buf[0] == 0xfe{
//do something
}
socket.close().await.unwrap();
}
}
//client
async fn connect(){
let socket = RaknetSocket::connect("127.0.0.1:19132".parse().unwrap()).await.unwrap();
socket.send(&[0xfe], Reliability::ReliableOrdered).await.unwrap();
let buf = socket.recv().await.unwrap();
if buf[0] == 0xfe{
//do something
}
socket.close().await.unwrap();
}
Contribution
If you want to develop with me, you can contact me via discord or email.