Skip to content

Instantly share code, notes, and snippets.

@sector-f
Created April 10, 2016 19:54
Show Gist options
  • Save sector-f/21c317d6ca8c0cbce95079ef9bfa8b87 to your computer and use it in GitHub Desktop.
Save sector-f/21c317d6ca8c0cbce95079ef9bfa8b87 to your computer and use it in GitHub Desktop.
TCP echo
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)
}
}
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