2014-02-06 38 views
1

我寫的客戶端程序使用SCTP套接字進行通信。我正在使用sctp_recvmsg從套接字讀取特定用戶的數據。我注意到,有時sctp_recvmsg返回0值而不是讀取的字節數,或者-1指示錯誤。我檢查了我的代碼和正在讀取數據的套接字未關閉。有人能夠看到如何看待這種行爲嗎?SCTP接收消息函數返回零

在此先感謝。

問候, Sujay

+0

你使用哪個操作系統? Linux,Solaris ...你能提供代碼嗎?如果可能,請使用tcpdump/snoop捕獲網絡軟件包。 –

回答

0

根據this lksctp threadsctp_recvmsg()返回0,如果另一端關閉了連接,當你在1對1的SCP連接(see here用於解釋一到一個和一對多連接) - 也就是說,當您使用SOCK_STREAM而不是SOCK_SEQPACKET創建套接字時。

報價:從則sctp_sendmsg和sctp_recvmsg

返回值沒有記載,但 我會想則sctp_sendmsg將返回-1,並設置errno爲ECONNRESET 一樣SENDMSG一樣。但是,關於sctp_recvnmsg呢? Plain 如果半連接關閉,recvmsg應該返回0,但SCTP中沒有 半連接。函數如何表現正確?

sctp_recvmsg()將僅在1對1套接字上終止時返回0。 但是,上述通知將適用於兩種樣式。