in src/net/src/tcp.rs [270:319]
fn ping_pong() {
let connector = create_connector();
let listener = create_listener("127.0.0.1:0");
let addr = listener.local_addr().expect("listener has no local addr");
let mut client_stream = connector.connect(addr).expect("failed to connect");
std::thread::sleep(std::time::Duration::from_millis(100));
let mut server_stream = listener.accept().expect("failed to accept");
std::thread::sleep(std::time::Duration::from_millis(100));
client_stream
.write_all(b"PING\r\n")
.expect("failed to write");
client_stream.flush().expect("failed to flush");
std::thread::sleep(std::time::Duration::from_millis(100));
let mut buf = [0; 4096];
match server_stream.read(&mut buf) {
Ok(6) => {
assert_eq!(&buf[0..6], b"PING\r\n");
server_stream
.write_all(b"PONG\r\n")
.expect("failed to write");
}
Ok(n) => {
panic!("read: {} bytes but expected 6", n);
}
Err(e) => {
panic!("error reading: {}", e);
}
}
std::thread::sleep(std::time::Duration::from_millis(100));
match client_stream.read(&mut buf) {
Ok(6) => {
assert_eq!(&buf[0..6], b"PONG\r\n");
}
Ok(n) => {
panic!("read: {} bytes but expected 6", n);
}
Err(e) => {
panic!("error reading: {}", e);
}
}
}