2

SCTP 接收消息函数返回零中所述,当另一端关闭连接时,为一对一的SCTP 连接sctp_recvmsg()返回长度()。0socket(PF_INET, SOCK_STREAM, IPPROTO_SCT)

当我通过这样的连接发送一个空字符串 ( "")时,符合标准的实现会发生什么/应该发生什么?sctp_sendmsg()

  • (如何)接收方是否区分我是关闭连接还是只是发送了一个空字符串/
  • 还是发送空字符串是非法的?

我还没有遇到任何解释这一点的东西。

编辑:我应该提到,对于标准recv()SOCK_STREAM例如对于 TCP),当对等方执行了有序的 shutdown 时,会发生接收 0 长度的缓冲区,因此显然您不允许send()在 TCP 中使用空字符串。对于像 TCP 这样的纯流协议,这是完全有意义的,因为 0 长度的数据在流中没有意义。但它很可能对数据报有意义,就像 的情况一样sctp_recvmsg(),所以我们不能真的说“它就像 TCP 一样”

4

0 回答 0