使用原始TCP套接字时,需要进行消息框架,如here所述,使用长度前缀或分隔符。
我今天遇到了“SOCK_SEQPACKET”套接字选项,这显然可以实现几乎透明的消息框架。
目前平台和操作系统中“SOCK_SEQPACKET”的可用性是多少? (Windows,OSX,Linux,IOS,Android ......)
答案 0 :(得分:4)
我使用SOCK_SEQPACKET
的{{1}},这样:
AF_INET
您无法获得TCP套接字。如果您的平台支持,套接字将是SCTP套接字。
SCTP尚未广泛使用。最新的Linux版本支持它(如果启用了SCTP)。
答案 1 :(得分:1)
在Mac OS X(El Captain)上仍然无法使用SCTP。 在https://github.com/sctplab/SCTP_NKE_ElCapitan有第三方开源内核扩展 - 但它是未签名的,因此您必须禁用Apple系统完整性保护。
参见例如https://apple.stackexchange.com/questions/114217/sctp-kernel-extension-for-mavericks
同样,你也不能在Mac OS X上对AF_UNIX使用SOCK_SEQPACKET。
答案 2 :(得分:0)