2012-10-08 25 views
0

背景:我有一個用Erlang編寫的自定義HTTP服務器來將東西流式傳輸到iPad應用程序。我使用NSURLConnection - 標準的高級Apple方式來使用HTTP內容。然而,我遇到了小塊數據被緩衝的問題,並且沒有立即傳遞給我的代碼,所以我不得不切換到CFNetwork。我的HTTP服務器的輸出顯然無效。我如何調試它?

雖然NSURLConnection的從來沒有抱怨,CFNetwork的有時(〜1 3次)提供了以下錯誤並殺死的連接:

The operation couldn’t be completed. (kCFErrorDomainCFNetwork error 303.) 

根據Apple docs,這對應於「HTTP服務器響應無法解析「。

這隻發生在連接打開幾秒後,並且正在作出響應。

我用tshark在服務器上捕獲了一個數據包。它非常大,包含UTF-8以及機密信息。

如何驗證它是否爲有效的HTTP 1.1分塊響應?

爲了澄清,我查看了tcpick -C -yP -r ...的結果,看不到任何直接的錯誤,但我想知道是否有任何事情可以通過它來確認它是字節有效的字節。

回答

0

原來Erlang網絡服務器中的sndbuf設置得太低,這是問題所在。

這是掃描數據包捕獲的5小時的浪費,實現分塊HTTP與CFStream從無到有,等,等

-1

我該如何去驗證它是一個有效的HTTP 1.1分塊響應?

通過確認whe chunked transfer encodingimplemented correctly

+0

護理闡述?據我所知,實現是合理的,據我所知,數據包轉儲是合理的(雖然它很大,所以我的目光有點膚淺),但CFNetwork告訴我這聽起來不太合適。我寫了一個HTTP客戶端來使用數據包捕獲來驗證它,我有什麼可以做的來驗證它嗎? – Max

相關問題