mirror of
https://github.com/MeexReay/sRAC.git
synced 2025-05-06 05:08:02 +03:00
accept stream write
This commit is contained in:
parent
5296399231
commit
fadeff53e0
33
src/main.rs
33
src/main.rs
@ -1,11 +1,30 @@
|
||||
use std::{env::args, error::Error, io::Read, net::{TcpListener, TcpStream}, thread};
|
||||
use std::{env::args, error::Error, io::{Read, Write}, net::{TcpListener, TcpStream}, sync::{Arc, RwLock}, thread};
|
||||
|
||||
fn accept_stream(mut stream: TcpStream) -> Result<(), Box<dyn Error>> {
|
||||
fn accept_stream(mut stream: TcpStream, messages: Arc<RwLock<Vec<u8>>>) -> Result<(), Box<dyn Error>> {
|
||||
let mut buf = vec![0; 4096];
|
||||
let size = stream.read(&mut buf)?;
|
||||
buf.truncate(size);
|
||||
|
||||
stream.read(&mut buf)?;
|
||||
if buf[0] == 0x01 && size == 1 {
|
||||
stream.write_all(messages.read().unwrap().len().to_string().as_bytes())?;
|
||||
|
||||
if buf[0]
|
||||
let mut buf = vec![0, 16];
|
||||
let size = stream.read(&mut buf)?;
|
||||
buf.truncate(size);
|
||||
|
||||
if buf[0] == 0x01 {
|
||||
stream.write_all(&messages.read().unwrap())?;
|
||||
} else if buf[0] == 0x02 {
|
||||
let len: usize = String::from_utf8(buf[1..].to_vec())?.parse()?;
|
||||
stream.write_all(&messages.read().unwrap().clone()[len..])?;
|
||||
}
|
||||
} else if buf[0] == 0x01 {
|
||||
messages.write().unwrap().append(&mut buf[1..].to_vec());
|
||||
} else if buf[0] == 0x02 {
|
||||
|
||||
} else if buf[0] == 0x03 {
|
||||
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
@ -15,13 +34,17 @@ fn main() {
|
||||
|
||||
let listener = TcpListener::bind(&addr).expect("error trying bind to the provided addr");
|
||||
|
||||
let messages = Arc::new(RwLock::new(Vec::new()));
|
||||
|
||||
println!("Server started on {}", &addr);
|
||||
|
||||
for stream in listener.incoming() {
|
||||
let Ok(stream) = stream else { continue };
|
||||
|
||||
let messages = messages.clone();
|
||||
|
||||
thread::spawn(move || {
|
||||
let _ = accept_stream(stream);
|
||||
let _ = accept_stream(stream, messages);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user