#udp #tokio #stream #dtls #data-stream #udp-packet

udp-stream

与TcpStream相同的UdpSocket实现

6个版本

0.0.12 2024年6月26日
0.0.11 2024年1月26日
0.0.10 2023年12月7日
0.0.9 2023年7月9日
0.0.0-alpha.3 2019年11月30日

#483 in 网络编程

Download history 930/week @ 2024-05-03 1085/week @ 2024-05-10 902/week @ 2024-05-17 412/week @ 2024-05-24 724/week @ 2024-05-31 579/week @ 2024-06-07 581/week @ 2024-06-14 1934/week @ 2024-06-21 1365/week @ 2024-06-28 1584/week @ 2024-07-05 1917/week @ 2024-07-12 1873/week @ 2024-07-19 1518/week @ 2024-07-26 1621/week @ 2024-08-02 1899/week @ 2024-08-09 1728/week @ 2024-08-16

7,152每月下载量
6 crates中使用

MIT许可协议

16KB
228

udp-stream

crates.io

udp-stream是一个Rust库,它提供了一个简单的API来处理用户数据报协议(UDP)上的流式数据,类似于TcpStream。它抽象了处理UDP的复杂性,如处理数据包分片、重组和流量控制,使开发者能够轻松地在UDP套接字上发送和接收连续的数据流,尤其是在使用DTLS协议时。

特性

  • 基于流udp-stream提供了一个抽象层来处理UDP数据包作为连续的数据流,使用与tokio库中的TcpStream类似的功能签名。这使得熟悉tokio的开发者能够利用现有知识以类似的方式处理UDP。

  • 轻量级udp-stream占用空间小,仅依赖于tokiobytes库,使其轻量级且易于集成到现有项目中。

使用方法

要在Rust项目中使用udp-stream,只需将其添加到您的Cargo.toml文件中的依赖项

toml

udp-stream = "0.0.11"

然后,您可以在Rust代码中导入并使用该库

rust

use std::{net::SocketAddr, str::FromStr};

use tokio::io::{AsyncReadExt, AsyncWriteExt};

use udp_stream::UdpStream;

#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
    let mut stream = UdpStream::connect(SocketAddr::from_str("127.0.0.1:8080")?).await?;
    println!("Ready to Connected to {}", &stream.peer_addr()?);
    let mut buffer = String::new();
    loop {
        std::io::stdin().read_line(&mut buffer)?;
        stream.write_all(buffer.as_bytes()).await?;
        let mut buf = vec![0u8; 1024];
        let n = stream.read(&mut buf).await?;
        print!("-> {}", String::from_utf8_lossy(&buf[..n]));
        buffer.clear();
    }
}

有关如何使用udp-stream的更多详细信息,包括配置选项、DTLS使用和高级用法,请参阅示例

贡献

欢迎对udp-stream的贡献!如果您想为库做出贡献,请遵循Rust社区的标准贡献指南,包括打开问题、提交pull请求和提供反馈。

许可协议

udp-stream采用MIT许可协议,允许免费使用、修改和分发,但需遵守许可中概述的条款和条件。

我们希望 udp-stream 对您的项目有所帮助!如果您有任何问题或需要进一步的帮助,请随时联系我们或在仓库中创建一个问题。

依赖项

~3–11MB
~113K SLoC