use futures::future::try_join; use std::io; use tokio::{
io::{AsyncReadExt, AsyncWriteExt},
net::UnixSocket,
};
#[tokio::test] asyncfn datagram_echo_server() -> io::Result<()> { let dir = tempfile::tempdir().unwrap(); let server_path = dir.path().join("server.sock"); let client_path = dir.path().join("client.sock");
let server_socket = { let socket = UnixSocket::new_datagram()?;
socket.bind(&server_path)?;
socket.datagram()?
};
letmut recv_buf = [0u8; 16]; let len = socket.recv(&mut recv_buf[..]).await?;
assert_eq!(&recv_buf[..len], b"ECHO");
}
Ok(())
}
#[tokio::test] asyncfn listen_and_stream() -> std::io::Result<()> { let dir = tempfile::Builder::new().tempdir().unwrap(); let sock_path = dir.path().join("connect.sock"); let peer_path = dir.path().join("peer.sock");
let listener = { let sock = UnixSocket::new_stream()?;
sock.bind(&sock_path)?;
sock.listen(1024)?
};
let accept = listener.accept(); let connect = { let sock = UnixSocket::new_stream()?;
sock.bind(&peer_path)?;
sock.connect(&sock_path)
};
let ((mut server, _), mut client) = try_join(accept, connect).await?;
// Write to the client.
client.write_all(b"hello").await?;
drop(client);
// Read from the server. letmut buf = vec![];
server.read_to_end(&mut buf).await?;
assert_eq!(&buf, b"hello"); let len = server.read(&mut buf).await?;
assert_eq!(len, 0);
Ok(())
}
#[tokio::test] asyncfn assert_usage() -> std::io::Result<()> { let datagram_socket = UnixSocket::new_datagram()?; let result = datagram_socket
.connect(std::path::PathBuf::new().join("invalid.sock"))
.await;
assert_eq!(
result.unwrap_err().to_string(), "connect cannot be called on a datagram socket"
);
let datagram_socket = UnixSocket::new_datagram()?; let result = datagram_socket.listen(1024);
assert_eq!(
result.unwrap_err().to_string(), "listen cannot be called on a datagram socket"
);
let stream_socket = UnixSocket::new_stream()?; let result = stream_socket.datagram();
assert_eq!(
result.unwrap_err().to_string(), "datagram cannot be called on a stream socket"
);
Ok(())
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-06-19)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.