open.mp forum
[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.rs
to see how the tests for this library are crafted.

Code:
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