![]() |
|
[Tool] Query open.mp servers in Rust - Printable Version +- open.mp forum (https://forum.open.mp) +-- Forum: SA-MP (https://forum.open.mp/forumdisplay.php?fid=3) +--- Forum: Releases (https://forum.open.mp/forumdisplay.php?fid=13) +--- Thread: [Tool] Query open.mp servers in Rust (/showthread.php?tid=2495) |
Query open.mp servers in Rust - Carlos - 2023-11-29 openmultiplayer-query Implements the needed builders and parsers for SA:MP's/Open Multiplayer's Query Mechanism, allowing a developer to retrieve data from a running server. You cannot send RCON packets yet. Examples You can check Code: tests/packet.rsCode: use openmultiplayer_query::{Packet, Opcodes};
// Assume you have a UDP socket running
let socket = UdpSocket::bind("0.0.0.0:0")?;
// We'll send a packet to 149.56.84.18:7777
let address: Ipv4Addr = "149.56.84.18".parse::<Ipv4Addr>().unwrap();
let port = 7777;
let mut packet = PacketBuilder::new(Opcodes::I, address, port)?;
// ...
packet.build()?; // This is needed in order to populate the data buffer with query data.
// Send the packet through the socket.
socket.send_to(packet.get_data().unwrap(), (address, port))?;
let mut recv_buf = [0u8; 2048];
socket.recv(&mut recv_buf)?;
let result: Result<Packet::InformationPacket, _> = (&recv_buf[..]).try_into();
// Use resultĀ as you please |