なるほど、接続状態が維持されているのがわかる。
use std::net::{TcpListener, TcpStream};
use std::thread;
use std::io::{Read,Write,Error};
fn sendRecv(mut stream: TcpStream) -> Result<(), Error>
{
println!("Connection from: {}", stream.peer_addr()?);
let mut buf = [0; 512];
loop {
let byte_read = stream.read(&mut buf)?;
if byte_read == 0{return Ok(());} else {
let msg = format!("MESSAGE:");
stream.write(msg.as_bytes()).expect("SEND FAILURE!!!");
}
stream.write(&buf[..byte_read])?;
}
}
fn main() {
let args: Vec<String> = std::env::args().collect();
let coninfo = args[1].to_string() + ":" + &args[2];
let listener = TcpListener::bind(coninfo).expect("COuld not bind");
for stream in listener.incoming(){
match stream {
Err(e) => {eprintln!("failed: {}", e)}
Ok(stream) =>
{
thread::spawn(move || {
sendRecv(stream).unwrap_or_else(|error| eprintln!("{:?}", error));
});
}
}
}
println!("hello world");
}
Running `target/debug/sample 192.168.33.10 8000`
Connection from: 192.168.33.10:55828
$ nc 192.168.33.10 8000
hello
MESSAGE:hello