1 个不稳定版本

0.1.2 2022年7月22日

#18 in #rcon

MIT 许可证

10KB
187

rcon-rs

对RCON协议进行操作的一个简单crate实现

要使用TCP,使用内置在TcpStream结构中的std::net模块

关于RCON

依赖

  • bytes 用于将类型转换为字节,以便通过tcp进行后续传输
  • rand 用于生成随机请求ID
  • serde 用于序列化错误
  • thiserror 也用于序列化错误

支持此协议的游戏

  • Minecraft
  • 反恐精英
  • ARK
  • Rust
  • SAMP
  • MTA
  • 等等

示例

use rcon::{AuthRequest, RCONClient, RCONConfig, RCONError, RCONRequest};

fn main() -> Result<(), RCONError> {
    // Create new RCON client
    let mut client = RCONClient::new(RCONConfig {
        url: "donkey-engine.host".to_string(),
        // Optional
        read_timeout: Some(13),
        write_timeout: Some(37),
    })?;

    // Auth request to RCON server (SERVERDATA_AUTH)
    let auth_result = client.auth(AuthRequest::new("rcon.password".to_string()))?;
    assert!(auth_result.is_success());

    // Execute command request to RCON server (SERVERDATA_EXECCOMMAND)
    let version = client.execute(RCONRequest::new("seed".to_string()))?;
    assert_eq!(version.body, "Seed: [3257840388504953787]");

    Ok(())
}

依赖

~0.9–1.5MB
~32K SLoC