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));
                });
            }
        }
    }
}