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

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

文章标题:rust_socket_file_client

字数:174

本文作者:ggchzzz

发布时间:2022-03-09, 18:20:46

最后更新:2023-12-22, 23:17:54

原始链接:https://anska.info/post/8.html

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

github