我寫的客戶端程序使用SCTP套接字進行通信。我正在使用sctp_recvmsg從套接字讀取特定用戶的數據。我注意到,有時sctp_recvmsg返回0值而不是讀取的字節數,或者-1指示錯誤。我檢查了我的代碼和正在讀取數據的套接字未關閉。有人能夠看到如何看待這種行爲嗎?SCTP接收消息函數返回零
在此先感謝。
問候, Sujay
我寫的客戶端程序使用SCTP套接字進行通信。我正在使用sctp_recvmsg從套接字讀取特定用戶的數據。我注意到,有時sctp_recvmsg返回0值而不是讀取的字節數,或者-1指示錯誤。我檢查了我的代碼和正在讀取數據的套接字未關閉。有人能夠看到如何看待這種行爲嗎?SCTP接收消息函數返回零
在此先感謝。
問候, Sujay
根據this lksctp thread,sctp_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。 但是,上述通知將適用於兩種樣式。
你使用哪個操作系統? Linux,Solaris ...你能提供代碼嗎?如果可能,請使用tcpdump/snoop捕獲網絡軟件包。 –