Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Rustでパケットと戯れる

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for nwiizo nwiizo
December 22, 2017
160

 Rustでパケットと戯れる

Avatar for nwiizo

nwiizo

December 22, 2017
Tweet

More Decks by nwiizo

Transcript

  1. use std::net::{TcpListener, TcpStream}; use std::thread; // traits use std::io::Read; use

    std::io::Write; fn handle_client(mut stream: TcpStream) { let mut buf; loop { // clear out the buffer so we don't send garbage buf = [0; 512]; let _ = match stream.read(&mut buf) { Err(e) => panic!("Got an error: {}", e), Ok(m) => { if m == 0 { // we've got an EOF break; } m }, }; match stream.write(&buf) { Err(_) => break, Ok(_) => continue, } } } fn main() { let listener = TcpListener::bind("127.0.0.1:8888").unwrap(); for stream in listener.incoming() { match stream { Err(e) => { println!("failed: {}", e) } Ok(stream) => { thread::spawn(move || { handle_client(stream) }); } } } } No.2