Repository navigation
Quick Start
最低要求:Rust 1.85、Tokio 1.38。使用 Rust 2024 edition。请在任务专属副本、容器或虚拟机中创建示例和运行服务,使用独立 Cargo 缓存和构建目录;本地服务放在私有网络命名空间中。
新建二进制项目,将依赖加入 Cargo.toml:
[package]
name = "raknet-echo"
version = "0.1.0"
edition = "2024"
[dependencies]
rust-raknet = "1.4.0"
tokio = { version = "1.38", features = ["full"] }示例对应已发布的 1.4.0。Rust 1.85 是声明的最低版本,tokio = "1.38" 是依赖范围;新解析的所有依赖不一定都支持旧 Rust,使用最低版本时应保留兼容锁文件。发送策略、恢复策略和同步调用均可选。
保存为 src/bin/server.rs:
use rust_raknet::{RaknetListener, Reliability, error::Result};
#[tokio::main]
async fn main() -> Result<()> {
let address = "127.0.0.1:19132".parse().unwrap();
let mut listener = RaknetListener::bind(&address).await?;
listener.listen().await;
loop {
let socket = listener.accept().await?;
tokio::spawn(async move {
while let Ok(message) = socket.recv().await {
if let Err(error) = socket
.send(&message, Reliability::ReliableOrdered)
.await
{
eprintln!("Echo failed: {error}");
break;
}
}
let _ = socket.close().await;
});
}
}bind() 分配 UDP socket,listen() 启动监听,accept() 返回独立会话。每个会话启动一个异步任务,监听循环才能继续接收其他连接。
保存为 src/bin/client.rs:
use rust_raknet::{RaknetSocket, Reliability, error::Result};
#[tokio::main]
async fn main() -> Result<()> {
let address = "127.0.0.1:19132".parse().unwrap();
let socket = RaknetSocket::connect(&address).await?;
socket.send(&[0xfe, 1, 2, 3], Reliability::ReliableOrdered).await?;
let reply = socket.recv().await?;
println!("Echo: {reply:?}");
socket.close().await
}在同一个隔离网络内的两个终端分别运行:
cargo run --bin server
cargo run --bin client客户端应输出 Echo: [254, 1, 2, 3]。两端需要共享网络命名空间;各自容器中的 127.0.0.1 通常不指向另一容器。
回显示例可直接使用上面的 server.rs / client.rs。仓库还提供 concurrency、concurrency_benchmark、sharded_echo、interop 和 bedrock_probe 等示例。先核对 examples 目录 的参数与源代码。普通 .rs 示例使用 --example;examples/proxy、examples/bedrock_ping、examples/test_benchmark 是独立 Cargo 项目,使用 --manifest-path。
English · 简体中文 · GitHub · crates.io 1.4.0 · Reviewed / 核对:2026-10-12 / b909c93
- Overview
- Quick start
- Blocking calls and shared runtimes
- Public API index
- Five reliability modes
- RakNet wire format and recovery
- Message lifecycle and limits
- Bytes and explicit batching
- Send policy
- Recovery policy and tail probes
- Every configuration parameter
- Concurrency and socket tuning
- Errors, deadlines and cancellation
- Congestion and deployment boundaries
- Benchmark results
- Benchmark methodology
- Benchmark reproduction
- Minecraft Bedrock proxy
- Troubleshooting and development
- Release history and upgrading