asyncでなくてもtcpstreamができて、nonblockingの設定もできるみたい。ただ、動かし方がよくわからん…
https://doc.rust-lang.org/std/net/struct.TcpStream.html#method.set_nonblocking
https://doc.rust-lang.org/std/net/struct.TcpListener.html#method.set_nonblocking
TcpStreamは接続で、TcpListenerはbindって理解で合ってるかな?
use std::io::{self, Read}; use std::net::TcpStream; fn main() { let mut stream = TcpStream::connect("127.0.0.1:7878"); expect("Couldn't connect to the server"); stream.set_nonblocking(true).expect("set_nonblocking call failed"); let mut buf = vec![]; loop { match stream.read_to_end(&mut buf) { Ok(_) => break, Err(ref e) if e.kind() == io::ErrorKind::WouldBlock => { wait_for_fd(); } Err(e) => panic!("encountered IO error: {e}"), }; }; println!("bytes: {buf:?}"); }