1 个不稳定版本
使用旧的 Rust 2015
0.0.1 | 2018 年 12 月 14 日 |
---|
#16 在 #datagram
17KB
207 行
udpsocket2
一个更易用的 Tokio 启用 UDP 套接字。
特别关注 UDP 套接字既可以发送也可以接收数据报文,并且实际的消费者希望能够在同一个套接字上以非阻塞 I/O 的方式完成这两项操作。
extern crate futures;
extern crate udpsocket2;
use udpsocket2::UdpSocket;
fn main() -> std::io::Result<()> {
use futures::{Future, Stream};
use futures::future::ok;
let socket = UdpSocket::bind("127.0.0.1:34254")?;
tokio::run(ok(()).and_then(move |_| {
tokio::spawn(
socket.incoming()
.for_each(|datagram| { println!("{:?}", datagram); Ok(()) })
.map_err(|_| ())
);
tokio::spawn(
socket.send_to(&[0xde, 0xad, 0xbe, 0xef], "127.0.0.1:34254")?
.map_err(|_| ())
);
Ok(())
}).map_err(|_: std::io::Error| ()));
Ok(())
}
lib.rs
:
一个更易用的 Tokio 启用 UDP 套接字。
特别关注 UDP 套接字既可以发送也可以接收数据报文,并且实际的消费者希望能够在同一个套接字上以非阻塞 I/O 的方式完成这两项操作。
有关更详细的信息,请参阅 UdpSocket
结构体文档。
示例
#
#
#
#
let socket = UdpSocket::bind("127.0.0.1:34254")?;
#
tokio::spawn(
socket.incoming()
.for_each(|datagram| { println!("{:?}", datagram); Ok(()) })
.map_err(|_| ())
);
tokio::spawn(
socket.send_to(&[0xde, 0xad, 0xbe, 0xef], "127.0.0.1:34254")?
.map_err(|_| ())
);
#
#
#
依赖项
~3MB
~45K SLoC