我需要強制返回值read
從套接字等於零沒有關閉連接。在C++中讀取socket返回值
我在一個頁面說法仔細閱讀以下聲明:
如果收到或連接被關閉檔案結尾的條件,則返回0。
但我不知道如何讓它在我發送的字符串後收到該條件。
任何人都可以幫忙嗎?
我需要強制返回值read
從套接字等於零沒有關閉連接。在C++中讀取socket返回值
我在一個頁面說法仔細閱讀以下聲明:
如果收到或連接被關閉檔案結尾的條件,則返回0。
但我不知道如何讓它在我發送的字符串後收到該條件。
任何人都可以幫忙嗎?
如果您希望對等方的read()或recv()返回零,您必須關閉套接字或關閉套接字以輸出。無論哪種情況,您都不能在之後發送任何其他內容。如果這種限制不適合你,你將不得不修改你的要求,因爲它沒有意義。
「文件結束條件」和「連接關閉」狀態都會告訴接收方在此套接字上不能接收更多數據。你不能通過發送一些魔法數據來模擬。
除了要求close
插槽上就可以使用在插座上shutdown(2)
只接近或者讀出側或寫入一側的。這可能有助於在有限的情況下,但不是在一般情況下。
也許你需要一些多路複用系統調用,如poll(2)。
你肯定需要閱讀一些好的材料,如Advanced Linux Programming或Advanced Unix Programming。
如果您需要的TCP/IP傳輸到公共交通應用的消息,你需要關心的包裝,並明確分段自己(無論是通過具有固定大小的郵件,或有一些辦法可以知道在傳輸過程中的邏輯消息大小) 。請注意,TCP/IP傳輸可能會被網絡碎片化。
你能解釋_爲什麼你想要這個?接收者怎麼知道接收到「read」呼叫的次數? –
我想這使雙方可以溝通彼此,而且我用我的代碼是這樣的:\t \t而((N =讀(襪子,rcv_buffer,LEN))!= 0),以保證收到的整個消息,那麼服務器可以回覆,等等.. – sana
您可能具有發送端在一個單一的'send'或'write'系統調用發出一大堆的字節和recieving最終需要幾個'read'或'recv'爲拿到它,爲實現它。換句話說,TCP/IP傳輸可能被分割(網絡)。 –