我覺得我錯過了一些基本信息,但是,我面臨的問題是我收到一個數據包,它由兩個合併的其他數據包組成。服務器API工作正常,只有當多個寫入和讀取同時發生時,纔會發生此合併。因此,問題是服務器是否通過套接字執行多次寫入,誰負責區分數據包的起始位置,結束位置和第二個數據包的起始位置?我還是CFReadStreamRead?CFReadStreamRead在讀取時如何區分數據包?
目前,我使用的是AsyncSocket,它是CFNetwork的一個包裝,但是恕我直言,這個問題與CFReadStreamRead本身有關:有時它將兩個數據包作爲一個讀取,而不是單獨讀取它們。當無法同時發生多個寫入和讀取時,我無法找到關於流程如何進行的相關示例和信息,並且是否需要明確地執行某些操作以獲取數據包,還是需要手動將這些數據包從未來的數據流中分離出來?雖然CFReadStreamRead已經這樣做,但也許我失蹤了。
謝謝,答案片段「多次寫入可能映射到單個讀取或反之亦然」很好地回答了我的問題:)因爲早些時候,我通過一次寫入將映射到一次讀取。將開始深入挖掘,因爲我的第一個問題是,這是正常的AsyncSocket返回一個NSData數據包,而不是兩個:http://stackoverflow.com/questions/9359391/asyncsocket-getting-merged-two-packets-instead-of-分開雙包 – Centurion 2012-02-20 17:44:37
是的,AsyncSocket的行爲與此處所設計的相同。 – 2012-02-20 18:08:06