Created
April 10, 2016 19:54
-
-
Save sector-f/21c317d6ca8c0cbce95079ef9bfa8b87 to your computer and use it in GitHub Desktop.
TCP echo
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
use std::io::{BufRead, BufReader, Write}; | |
use std::net::TcpStream; | |
use std::process::exit; | |
fn main() { | |
let addr: u16 = 12345; | |
// let args = env::args().skip(1).collect::<Vec<_>>().join(" "); | |
let mut stream = match TcpStream::connect(("localhost", addr)) { | |
Ok(s) => s, | |
Err(e) => { | |
println!("Could not connect to port {}: {}", addr, e); | |
exit(1); | |
}, | |
}; | |
stream.write_all(b"Test\n").unwrap(); | |
let bufreader = BufReader::new(stream); | |
for line in bufreader.lines().filter_map(Result::ok) { | |
println!("{}", line) | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
use std::io::{Read, Write}; | |
use std::net::TcpListener; | |
use std::process::exit; | |
use std::thread; | |
fn main() { | |
let addr: u16 = 12345; | |
let listener = match TcpListener::bind(("localhost", addr)) { | |
Ok(s) => { | |
println!("Listening on port {}", addr); | |
s | |
}, | |
Err(e) => { | |
println!("Error listening on port {}: {}", addr, e); | |
exit(1); | |
}, | |
}; | |
for stream in listener.incoming() { | |
if let Ok(mut out) = stream { | |
thread::spawn(move || { | |
if let Ok(mut inp) = out.try_clone() { | |
let mut buffer: Vec<u8> = Vec::new(); | |
let _ = inp.read_to_end(&mut buffer); | |
let _ = out.write_all(&buffer); | |
} | |
}); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment