6

使用原始 TCP 套接字时,需要使用长度前缀或分隔符进行消息框架,如此处所述。

我今天遇到了“SOCK_SEQPACKET”套接字选项,它显然可以几乎透明地执行消息框架。

目前在平台和操作系统中“SOCK_SEQPACKET”的可用性如何?(Windows、OSX、Linux、IOS、安卓...)

4

3 回答 3

6

我你使用SOCK_SEQPACKETAF_INET,这样:

socket(AF_INET, SOCK_SEQPACKET, 0); 

你不会得到 TCP 套接字。如果您的平台支持,该套接字将是一个 SCTP 套接字。

SCTP 尚未广泛使用。最新的 Linux 版本支持它(如果启用了 SCTP)。

还有一些适用于 Windows 的库

于 2012-11-08T11:07:05.663 回答
1

SCTP 在 Mac OS X (El Captain) 上仍然不可用。在https://github.com/sctplab/SCTP_NKE_ElCapitan有一个第 3 方开源内核扩展- 但它没有签名,因此您必须禁用 Apple 系统完整性保护。

参见例如https://apple.stackexchange.com/questions/114217/sctp-kernel-extension-for-mavericks

同样,您也不能在 Mac OS X 上将 SOCK_SEQPACKET 与 AF_UNIX 一起使用。

于 2016-10-02T13:36:13.693 回答
0

Linux从 2.6.4 版开始可用

Mac OS不可用 (更好的来源?)

窗户不可用

于 2018-05-24T21:16:29.390 回答