#mio #networking #uds #reactor #std

async-net

Async networking primitives for TCP/UDP/Unix communication

18 stable releases

2.0.0 Oct 29, 2023
1.8.0 Sep 25, 2023
1.7.0 Aug 17, 2022
1.6.1 Jun 30, 2021
0.0.0 May 4, 2019

#19 in Network programming

Download history 130628/week @ 2025-01-28 152531/week @ 2025-02-04 151465/week @ 2025-02-11 148183/week @ 2025-02-18 135241/week @ 2025-02-25 145899/week @ 2025-03-04 150432/week @ 2025-03-11 141302/week @ 2025-03-18 156374/week @ 2025-03-25 137348/week @ 2025-04-01 148756/week @ 2025-04-08 119699/week @ 2025-04-15 156651/week @ 2025-04-22 139481/week @ 2025-04-29 135242/week @ 2025-05-06 123376/week @ 2025-05-13

570,742 downloads per month
Used in 639 crates (61 directly)

Apache-2.0 OR MIT

83KB
1K SLoC

async-net

Build License Cargo Documentation

Async networking primitives for TCP/UDP/Unix communication.

This crate is an async version of std::net and std::os::unix::net.

Implementation

This crate uses async-io for async I/O and blocking for DNS lookups.

Examples

A simple UDP server that echoes messages back to the sender:

use async_net::UdpSocket;

let socket = UdpSocket::bind("127.0.0.1:8080").await?;
let mut buf = vec![0u8; 1024];

loop {
    let (n, addr) = socket.recv_from(&mut buf).await?;
    socket.send_to(&buf[..n], &addr).await?;
}

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~4–12MB
~159K SLoC