rust_socket_file_client
use std::net::{TcpListener,TcpStream};
use std::{env, fs, thread};
use std::io::{Read,Write,Error};
use std::ops::Not;
/**
rust socket file server
**/
//handles a single client
fn handle_client(mut stream:TcpStream) ->Result<(),Error>{
let mut args: Vec<String> = env::args().collect();
println!("Incomming connection from :{}",stream.peer_addr()?);
let fileName = args.pop().expect("error");
println!("fileName:{}",fileName);
let mut buf=[0;512];
let mut file = fs::File::open(fileName).unwrap();
while file.read(&mut buf).unwrap()!=0 {
stream.write(&buf);
}
return Ok(());
}
fn main() {
let listtener = TcpListener::bind("0.0.0.0:8888").expect("could not bind");
for stream in listtener.incoming(){
match stream {
Err(e)=>{eprintln!("failed:{}",e)}
Ok((stream))=>{
thread::spawn(move||{
handle_client(stream).unwrap_or_else(|error|eprintln!("{:?}",error));
});
}
}
}
}