Skip to main content

Crate sculk

Crate sculk 

Source
Expand description

sculk:面向 Minecraft 联机的 P2P 隧道库。

基于 iroh 提供端到端加密的 QUIC 连接, 封装了 host/join 双端流程、票据编码、事件流与自动重连能力。

§Overview

§Examples

Host 端:

use sculk::tunnel::{IrohTunnel, HostConfig};

let (_tunnel, ticket, mut events) =
    IrohTunnel::host(25565, None, None, HostConfig::default()).await?;
println!("share ticket: {ticket}");

while let Some(event) = events.recv().await {
    println!("{event:?}");
}

Join 端:

use sculk::tunnel::{IrohTunnel, Ticket, JoinConfig};

let ticket: Ticket = "sculk://<endpoint-id>".parse()?;
let (_tunnel, mut events) = IrohTunnel::join(&ticket, 30000, JoinConfig::default()).await?;

while let Some(event) = events.recv().await {
    println!("{event:?}");
}

§Notes

  • HostConfig::max_players 按唯一 EndpointId 计数。
  • 密码是应用层校验,不替代传输层加密。
  • join 侧是否自动重连由 JoinConfig::max_retries 控制。

Re-exports§

pub use error::Result;
pub use error::SculkError;
pub use types::RelayUrl;
pub use types::SecretKey;

Modules§

error
core crate 统一错误类型。
tunnel
P2P 隧道:基于 iroh QUIC 的 TCP 端口转发层。
types
对 iroh 公共类型的 newtype 封装。

Constants§

DEFAULT_INLET_PORT
join 端本地入站监听端口默认值。
DEFAULT_MC_PORT
Minecraft 服务端标准端口。