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));
});
}
}
}
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 ggchzzz@163.com