我编写的客户端程序使用SCTP套接字进行通信。我正在使用sctp_recvmsg从socket读取特定用户可用的数据。我注意到有时sctp_recvmsg返回0值而不是读取的字节数或-1表示错误。我检查了我的代码,并且没有关闭正在读取数据的套接字。有人可以说明如何看待这种行为?
先谢谢。
此致 Sujay
答案 0 :(得分:0)
根据this lksctp thread,如果对方在1对1 SCP连接中关闭连接,sctp_recvmsg()
将返回0(see here以解释为1到1) -one和one-to-many连接) - 也就是说,当您使用SOCK_STREAM
而不是SOCK_SEQPACKET
创建套接字时。
引用:
未记录sctp_sendmsg和sctp_recvmsg的返回值,但是 我想sctp_sendmsg将返回-1并将errno设置为ECONNRESET 和sendmsg一样。但是,sctp_recvnmsg怎么样?川 如果半连接关闭,recvmsg应该返回0,但是没有 SCTP中的半连接。该函数的表现如何?
sctp_recvmsg()仅在1对1套接字上终止时返回0。 但是,上述通知适用于两种样式。