Expand description

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
  • Linux/Windows/Mac/BSD support
  • Compatible with Minecraft 1.18.x

Get Started

[dependencies]
rust-raknet = "0.2.0"

Reliability

  • unreliable
  • unreliable sequenced
  • reliable
  • reliable ordered
  • reliable sequenced
  • unreliable (+ ACK receipt)
  • reliable (+ ACK receipt)
  • reliable ordered (+ ACK receipt)

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
        }
    }
}
 
//client
 
async fn connect(){
    let mut 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();
}

Macros

Print Raknet Log

Structs

Implementation of Raknet Server.

Raknet socket wrapper with local and remote.

Enums

Enumeration type options for Raknet transport reliability

Functions

A switch to print Raknet logs