1 #![cfg(not(loom))]
2 
3 //! TCP/UDP/Unix bindings for `tokio`.
4 //!
5 //! This module contains the TCP/UDP/Unix networking types, similar to the standard
6 //! library, which can be used to implement networking protocols.
7 //!
8 //! # Organization
9 //!
10 //! * [`TcpListener`] and [`TcpStream`] provide functionality for communication over TCP
11 //! * [`UdpSocket`] provides functionality for communication over UDP
12 //! * [`UnixListener`] and [`UnixStream`] provide functionality for communication over a
13 //! Unix Domain Stream Socket **(available on Unix only)**
14 //! * [`UnixDatagram`] provides functionality for communication
15 //! over Unix Domain Datagram Socket **(available on Unix only)**
16 //! * [`tokio::net::unix::pipe`] for FIFO pipes **(available on Unix only)**
17 //! * [`tokio::net::windows::named_pipe`] for Named Pipes **(available on Windows only)**
18 //!
19 //! For IO resources not available in `tokio::net`, you can use [`AsyncFd`].
20 //!
21 //! [`TcpListener`]: TcpListener
22 //! [`TcpStream`]: TcpStream
23 //! [`UdpSocket`]: UdpSocket
24 //! [`UnixListener`]: UnixListener
25 //! [`UnixStream`]: UnixStream
26 //! [`UnixDatagram`]: UnixDatagram
27 //! [`tokio::net::unix::pipe`]: unix::pipe
28 //! [`tokio::net::windows::named_pipe`]: windows::named_pipe
29 //! [`AsyncFd`]: crate::io::unix::AsyncFd
30 
31 mod addr;
32 cfg_not_wasi! {
33     #[cfg(feature = "net")]
34     pub(crate) use addr::to_socket_addrs;
35 }
36 pub use addr::ToSocketAddrs;
37 
38 cfg_net! {
39     mod lookup_host;
40     pub use lookup_host::lookup_host;
41 
42     pub mod tcp;
43     pub use tcp::listener::TcpListener;
44     pub use tcp::stream::TcpStream;
45     cfg_not_wasi! {
46         pub use tcp::socket::TcpSocket;
47 
48         mod udp;
49         #[doc(inline)]
50         pub use udp::UdpSocket;
51     }
52 }
53 
54 cfg_net_unix! {
55     pub mod unix;
56     pub use unix::datagram::socket::UnixDatagram;
57     pub use unix::listener::UnixListener;
58     pub use unix::stream::UnixStream;
59     pub use unix::socket::UnixSocket;
60 }
61 
62 cfg_net_windows! {
63     pub mod windows;
64 }
65