28 lines
880 B
Rust
28 lines
880 B
Rust
use std::io::prelude::*;
|
|
use std::{io, thread};
|
|
|
|
fn main() -> io::Result<()> {
|
|
let mut i = trust::Interface::new()?;
|
|
eprintln!("created interface");
|
|
let mut listener = i.bind(8000)?;
|
|
while let Ok(mut stream) = listener.accept() {
|
|
eprintln!("got connection!");
|
|
thread::spawn(move || {
|
|
stream.write(b"hello from rust-tcp!\n").unwrap();
|
|
stream.shutdown(std::net::Shutdown::Write).unwrap();
|
|
loop {
|
|
let mut buf = [0; 512];
|
|
let n = stream.read(&mut buf[..]).unwrap();
|
|
eprintln!("read {}b of data", n);
|
|
if n == 0 {
|
|
eprintln!("no more data!");
|
|
break;
|
|
} else {
|
|
println!("{}", std::str::from_utf8(&buf[..n]).unwrap());
|
|
}
|
|
}
|
|
});
|
|
}
|
|
Ok(())
|
|
}
|