Advertisement
Guest User

Untitled

a guest
Sep 3rd, 2019
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rust 1.62 KB | None | 0 0
  1. use std::net::{Shutdown, TcpListener, TcpStream};
  2. use std::thread;
  3.  
  4. fn handle_client(mut stream: TcpStream) -> std::io::Result<()> {
  5.     let mut streamout = match stream.try_clone() {
  6.         Ok(s) => s,
  7.         Err(e) => return Err(e),
  8.     };
  9.     let mut clientstream = match TcpStream::connect("127.0.0.1:22") {
  10.         Ok(thestream) => {
  11.             println!("Connected to the server!");
  12.             thestream
  13.         }
  14.         Err(e) => {
  15.             println!("Couldn't connect to server... {}", e);
  16.             stream.shutdown(Shutdown::Both).unwrap();
  17.             return Err(e);
  18.         }
  19.     };
  20.     let mut clientout = clientstream.try_clone().expect("clone failed...");
  21.     thread::spawn(move || {
  22.         std::io::copy(&mut clientstream, &mut streamout);
  23.         let v: Result<&str, ()> = Ok("a");
  24.         v
  25.     });
  26.     std::io::copy(&mut stream, &mut clientout);
  27.     Ok(())
  28. }
  29.  
  30. fn main() {
  31.     let listener = TcpListener::bind("0.0.0.0:3333").unwrap();
  32.     // accept connections and process them, spawning a new thread for each one
  33.     println!("Server listening on port 3333");
  34.     for stream in listener.incoming() {
  35.         match stream {
  36.             Ok(stream) => {
  37.                 println!("New connection: {}", stream.peer_addr().unwrap());
  38.                 thread::spawn(move || {
  39.                     // connection succeeded
  40.                     handle_client(stream)
  41.                 });
  42.             }
  43.             Err(e) => {
  44.                 println!("Error: {}", e);
  45.                 /* connection failed */
  46.             }
  47.         }
  48.     }
  49.     // close the socket server
  50.     drop(listener);
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement