【问题标题】:SOCK_SEQPACKET availability?SOCK_SEQPACKET 可用性?
【发布时间】:2012-10-28 13:10:06
【问题描述】:

当使用原始 TCP 套接字时,需要进行消息成帧,正如 here 所解释的那样,使用长度前缀或分隔符。

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

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

【问题讨论】:

    标签: sockets networking tcp ip


    【解决方案1】:

    我你使用SOCK_SEQPACKETAF_INET,这样:

    socket(AF_INET, SOCK_SEQPACKET, 0); 
    

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

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

    some libraries also for Windows

    【讨论】:

      【解决方案2】:

      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 一起使用。

      【讨论】:

        【解决方案3】:

        Linux:可用since version 2.6.4

        Mac OSnot available (更好的来源?)

        Windowsnot available

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-04-23
          • 1970-01-01
          • 2020-08-17
          • 2018-03-03
          • 2011-12-07
          • 1970-01-01
          • 2012-05-03
          • 1970-01-01
          相关资源
          最近更新 更多