如SCTP 接收消息函数返回零中所述,当另一端关闭连接时,为一对一的SCTP 连接sctp_recvmsg()
返回长度()。0
socket(PF_INET, SOCK_STREAM, IPPROTO_SCT)
当我通过这样的连接发送一个空字符串 ( ""
)时,符合标准的实现会发生什么/应该发生什么?sctp_sendmsg()
- (如何)接收方是否区分我是关闭连接还是只是发送了一个空字符串/
- 还是发送空字符串是非法的?
我还没有遇到任何解释这一点的东西。
编辑:我应该提到,对于标准recv()
(SOCK_STREAM
例如对于 TCP),当对等方执行了有序的 shutdown 时,会发生接收 0 长度的缓冲区,因此显然您不允许send()
在 TCP 中使用空字符串。对于像 TCP 这样的纯流协议,这是完全有意义的,因为 0 长度的数据在流中没有意义。但它很可能对数据报有意义,就像 的情况一样sctp_recvmsg()
,所以我们不能真的说“它就像 TCP 一样”。