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 |
|
#483 in 网络编程
7,152每月下载量
在 6 crates中使用
16KB
228 行
udp-stream
udp-stream
是一个Rust库,它提供了一个简单的API来处理用户数据报协议(UDP)上的流式数据,类似于TcpStream。它抽象了处理UDP的复杂性,如处理数据包分片、重组和流量控制,使开发者能够轻松地在UDP套接字上发送和接收连续的数据流,尤其是在使用DTLS协议时。
特性
-
基于流:
udp-stream
提供了一个抽象层来处理UDP数据包作为连续的数据流,使用与tokio
库中的TcpStream
类似的功能签名。这使得熟悉tokio
的开发者能够利用现有知识以类似的方式处理UDP。 -
轻量级:
udp-stream
占用空间小,仅依赖于tokio
和bytes
库,使其轻量级且易于集成到现有项目中。
使用方法
要在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