Expand description
Async TCP.
This module contains the TCP networking types, similar to those found in
std::net
, but suitable for async programming via futures and
async
/await
.
- To connect to an address via TCP, use
TcpStream::connect
. - To listen for TCP connection, use
TcpListener::bind
and thenTcpListener::incoming
. - Once you have a
TcpStream
, you can use methods fromAsyncRead
,AsyncWrite
, and their extension traits (AsyncReadExt
,AsyncWriteExt
) to send and receive data.
§Example
use futures_net::{TcpListener, TcpStream};
use futures::prelude::*;
async fn say_hello(mut stream: TcpStream) {
stream.write_all(b"Shall I hear more, or shall I speak at this?!").await;
}
async fn listen() -> Result<(), Box<dyn std::error::Error + 'static>> {
let socket_addr = "127.0.0.1:80".parse()?;
let mut listener = TcpListener::bind(&socket_addr)?;
let mut incoming = listener.incoming();
// accept connections and process them serially
while let Some(stream) = incoming.next().await {
say_hello(stream?).await;
}
Ok(())
}
Structs§
- Connect
Future - The future returned by
TcpStream::connect
, which will resolve to aTcpStream
when the stream is connected. - Incoming
- Stream returned by the
TcpListener::incoming
function representing the stream of sockets received from a listener. - TcpListener
- A TCP socket server, listening for connections.
- TcpStream
- A TCP stream between a local and a remote socket.