12个版本
0.3.1 | 2023年11月8日 |
---|---|
0.3.0 | 2023年6月19日 |
0.2.5 | 2023年1月20日 |
0.1.3 | 2023年1月2日 |
0.0.1 | 2022年10月18日 |
#1021 在 网络编程
每月303 次下载
84KB
1.5K SLoC
简介
初始重点是实现RFC 6458中定义的Sockets扩展API,该API易于使用,并且应该与Rust中的任何async
工具包一起工作。当前实现针对基于Linux的系统。这些API不是lksctp
的包装,而是提供了所有使用Rust类型(如enum
、Vec
等)的API。最终,应该能够将SCTP
作为Rust的async
生态系统中的第一公民。
特别是,这个实现利用了Linux内核中的SCTP栈,与像webrtc-sctp这样的其他方法不同,后者试图在用户空间中构建整个SCTP
栈,主要针对在DTLS
套接字上运行SCTP
。
有关当前功能支持的兼容性,请参阅兼容性。
兼容性
async
运行时支持。
- 实现支持Tokio
async
运行时。
SCTP功能支持
本节记录了根据RFC 6458的当前对SCTP功能的支持。特别是,该RFC中标记为已弃用
的功能未实现。由于RFC中定义的Sockets扩展API基于C编程语言,实现中没有一对一的映射,请参阅注释以获取更多信息。
章节 | 兼容性 | 注释 |
---|---|---|
3.1.1 | 是 | |
3.1.2 | 是 | |
3.1.3 | 是 | |
3.1.4 | 是 | 参见注释1。 |
3.1.5 | 是 | 参见注释2。 |
3.1.6 | 是 | |
4.1.1 | 是 | |
4.1.2 | 是 | |
4.1.3 | 是 | |
4.1.4 | 是 | |
4.1.5 | 是 | |
4.1.6 | 是 | 参见注释2。 |
4.1.7 | 是 | |
4.1.8 | 是 | 参见注释1。 |
4.1.9 | 是 | |
5.3.1 | 是 | |
5.3.2 | 不适用 | |
5.3.3 | 不适用 | |
5.3.4 | 是 | |
5.3.5 | 是 | |
5.3.6 | 是 | 参见注释2。 |
5.3.7 | 否 | |
5.3.8 | 否 | 参见注释1。 |
5.3.9 | 否 | |
5.3.10 | 否 | |
6.1.1 | 是 | |
6.1.2 | 否 | |
6.1.3 | 否 | |
6.1.4 | 不适用 | |
6.1.5 | 是 | |
6.1.6 | 否 | 参见注释2。 |
6.1.7 | 否 | |
6.1.8 | 否 | 参见注释1。 |
6.1.9 | 否 | |
6.1.10 | 否 | |
6.1.11 | 否 | |
6.2.1 | 不适用 | |
6.2.2 | 是 | |
8.1.1 | 否 | |
8.1.2 | 否 | |
8.1.3 | 否 | |
8.1.4 | 否 | |
8.1.5 | 否 | |
8.1.6 | 否 | |
8.1.7 | 否 | |
8.1.8 | 否 | |
8.1.9 | 否 | |
8.1.10 | 否 | |
8.1.11 | 否 | |
8.1.12 | 否 | |
8.1.13 | 不适用 | |
8.1.14 | 不适用 | |
8.1.15 | 否 | |
8.1.16 | 否 | |
8.1.17 | 否 | |
8.1.18 | 否 | |
8.1.19 | 否 | |
8.1.20 | 否 | |
8.1.21 | 否 | |
8.1.22 | 不适用 | |
8.1.23 | 否 | |
8.1.24 | 否 | |
8.1.25 | 否 | |
8.1.26 | 否 | |
8.1.27 | 否 | |
8.1.28 | 否 | |
8.1.29 | 否 | |
8.1.30 | 否 | |
8.1.31 | 是 | |
8.1.32 | 否 | |
8.2.1 | 是 | |
8.2.2 | 否 | |
8.2.3 | 否 | |
8.2.4 | 否 | |
8.2.5 | 否 | |
8.2.6 | 否 | |
8.3.1 | 否 | |
8.3.2 | 否 | |
8.3.3 | 否 | |
8.3.4 | 否 | |
8.3.5 | 否 | |
9.1 | 否 | |
9.2 | 否 | |
9.3 | 否 | |
9.4 | 否 | |
9.5 | 否 | |
9.6 | 否 | |
9.7 | 不适用 | |
9.8 | 不适用 | |
9.9 | 否 | 参见注释3。 |
9.10 | 不适用 | |
9.11 | 不适用 | |
9.12 | 否 | |
9.13 | 否 |
注释
- 套接字的
drop
实现会关闭套接字,因此不支持显式的close
调用。 - 所有发送和接收函数都作为两个API
sctp_send
和sctp_recv
提供,因此没有为类似C的系统调用实现单独的实现。 - 此API不需要在Rust中实现。
许可证
许可协议如下之一
- Apache License,版本2.0(LICENSE-Apache 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT License(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
依赖项
~3–15MB
~128K SLoC