[−][src]Module romio::tcp
Async TCP bindings.
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
#![feature(async_await, await_macro, futures_api)] use romio::tcp::{TcpListener, TcpStream}; use futures::prelude::*; async fn say_hello(mut stream: TcpStream) { await!(stream.write_all(b"Shall I hear more, or shall I speak at this?!")); } 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) = await!(incoming.next()) { await!(say_hello(stream?)); } Ok(()) }
Structs
ConnectFuture | The future returned by |
Incoming | Stream returned by the |
TcpListener | A TCP socket server, listening for connections. |
TcpStream | A TCP stream between a local and a remote socket. |