read bytes fix + 0.1.3 ver

This commit is contained in:
MeexReay 2024-05-12 01:58:09 +03:00
parent 2614d6bbd0
commit 4c1824401c
3 changed files with 21 additions and 17 deletions

View File

@ -7,7 +7,7 @@ license-file = "LICENSE"
readme = "README.md" readme = "README.md"
keywords = ["minecraft", "protocol", "packets", "lightweight"] keywords = ["minecraft", "protocol", "packets", "lightweight"]
version = "0.1.2" version = "0.1.3"
edition = "2021" edition = "2021"
[dependencies] [dependencies]

View File

@ -79,23 +79,12 @@ impl Packet {
let bytes = s.as_bytes(); let bytes = s.as_bytes();
self.write_usize_varint(bytes.len())?; self.write_usize_varint(bytes.len())?;
self.write_bytes(bytes)
for b in bytes {
self.write(*b)?;
}
Ok(())
} }
pub fn read_string(&mut self) -> Result<String, ProtocolError> { pub fn read_string(&mut self) -> Result<String, ProtocolError> {
let size = self.read_usize_varint()?; let size = self.read_usize_varint()?;
let mut bytes: Vec<u8> = vec![0; size]; match String::from_utf8(self.read_bytes(size)?) {
for _ in 0..size {
bytes.push(self.read()?);
}
match String::from_utf8(bytes) {
Ok(i) => Ok(i), Ok(i) => Ok(i),
Err(_) => Err(ProtocolError::StringParseError) Err(_) => Err(ProtocolError::StringParseError)
} }
@ -107,6 +96,21 @@ impl Packet {
Err(_) => Err(ProtocolError::UnsignedShortError), Err(_) => Err(ProtocolError::UnsignedShortError),
} }
} }
pub fn write_bytes(&mut self, bytes: &[u8]) -> Result<(), ProtocolError> {
match Write::write_all(&mut self.buffer, bytes) {
Ok(_) => Ok(()),
Err(_) => Err(ProtocolError::WriteError),
}
}
pub fn read_bytes(&mut self, size: usize) -> Result<Vec<u8>, ProtocolError> {
let mut bytes = vec![0; size];
match Read::read(&mut self.buffer, &mut bytes) {
Ok(_) => Ok(bytes),
Err(_) => Err(ProtocolError::WriteError)
}
}
} }
pub struct MinecraftConnection<T: Read + Write> { pub struct MinecraftConnection<T: Read + Write> {

View File

@ -33,10 +33,10 @@ fn read_status_response(conn: &mut MCConn<TcpStream>) -> Result<String, Protocol
} }
fn main() { fn main() {
let mut conn = MCConn::connect("sloganmc.ru:25565").unwrap(); let mut conn = MCConn::connect("msk1b.haku.su:25566").unwrap();
send_handshake(&mut conn, 765, "sloganmc.ru", 25565, 1).unwrap(); send_handshake(&mut conn, 765, "msk1b.haku.su", 25565, 1).unwrap();
send_status_request(&mut conn).unwrap(); send_status_request(&mut conn).unwrap();
println!("{}", read_status_response(&mut conn).unwrap()); dbg!(read_status_response(&mut conn).unwrap());
} }