From 3698b82dd8986efa447bd51a2426a6b9d269cc69 Mon Sep 17 00:00:00 2001 From: Daniel Laptop Date: Thu, 15 Dec 2022 12:55:52 +0100 Subject: [PATCH] =?UTF-8?q?recive=20auf=20tcpstream=20umge=C3=A4ndert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/bin/message.rs | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/src/bin/message.rs b/src/bin/message.rs index 391a00d..7bd7d03 100644 --- a/src/bin/message.rs +++ b/src/bin/message.rs @@ -1,3 +1,8 @@ +use std::{ + io::{BufReader, Read}, + net::TcpStream, +}; + const KEYLENGTH: u8 = 32; pub enum PayloadType { @@ -41,34 +46,41 @@ impl Message { msg } - fn recive(input: Vec) -> Message { - let byte1 = input.get(0).expect("Fail to Read Byte 1"); - let byte2 = input.get(1).expect("Fail to Read Byte 2"); - let byte3 = input.get(2).expect("Fail to Read Byte 3"); - let byte4 = input.get(3).expect("Fail to Read Byte 4"); + fn recive(stream: TcpStream) -> Message { + let buffreader = BufReader::new(stream); + let mut byte_iterator = buffreader.bytes(); + let byte1 = byte_iterator.next().unwrap().unwrap(); + let byte2 = byte_iterator.next().unwrap().unwrap(); + let byte3 = byte_iterator.next().unwrap().unwrap(); + let byte4 = byte_iterator.next().unwrap().unwrap(); let src_id: u32 = (byte1 << 24) as u32 | (byte2 << 16) as u32 | (byte3 << 8) as u32 | (byte4 << 0) as u32; - let byte5 = input.get(5).expect("Fail to Read Byte 5"); - let byte6 = input.get(6).expect("Fail to Read Byte 6"); - let byte7 = input.get(7).expect("Fail to Read Byte 7"); - let byte8 = input.get(8).expect("Fail to Read Byte 8"); + let byte5 = byte_iterator.next().unwrap().unwrap(); + let byte6 = byte_iterator.next().unwrap().unwrap(); + let byte7 = byte_iterator.next().unwrap().unwrap(); + let byte8 = byte_iterator.next().unwrap().unwrap(); let dest_id: u32 = (byte5 << 24) as u32 | (byte6 << 16) as u32 | (byte7 << 8) as u32 | (byte8 << 0) as u32; - let byte9 = input.get(9).expect("Fail to Read byte 9"); - let byte10 = input.get(10).expect("Fail to Read byte 10"); + let byte9 = byte_iterator.next().unwrap().unwrap(); + let byte10 = byte_iterator.next().unwrap().unwrap(); let size = (byte9 << 8) as u16 | (byte10 << 0) as u16; assert!(size > 0, "Ungültige size größe size = {}", size); + let mut payload = Vec::::new(); + for i in 0..size { + payload.push(byte_iterator.next().unwrap().unwrap()); + } + Message { src_id: src_id, dest_id: dest_id, size: size, - payload: (&input[11..]).to_vec(), + payload: payload, } } // Methoden der Klasse