2011-01-22 101 views
1

我需要從URL異步下載大文件,並在處理數據之前將緩衝區(例如4096字節)填充到特定大小。使用內置對象如NSURLConnection會很好,但我遇到了一些問題。Objective-C:從URL中讀取特定緩衝區大小

隨着NSURLConnectiondidReceiveData:data消息決定何時自行發射。例如,我可能會第一次接收954個字節,隨後會收到1048個字節,直到完成下載。無論如何,我可以修改NSURLConnection以強制它在觸發接收消息之前讀取我需要的緩衝區大小?

我也研究過使用CFNetwork類,但是這看起來好像很難,如果可能的話就想避免它。

此外,我可能可以通過使用衆所周知的AsyncSocket類來完成此操作,但是接下來我必須解析HTTP標頭,並且我有一種感覺,其他Web服務器配置會出現更多問題。

預先感謝您。

回答

1

使用NSURLConnection,您必須將數據讀入您自己的緩衝區(例如NSData對象)。那麼爲什麼不從每個4096字節的緩衝區讀取數據呢?

聽起來好像你只對處理數據的過程感興趣,而不是保存所有數據。因此,也許你可以做這樣的事情,只要你接收數據(僞):

while buffer.size > 4096: 
    copy first 4096 bytes into separate buffer 
    process separate buffer 
    delete first 4096 bytes from buffer 

,然後處理無論是左(如有必要)當連接關閉。

+0

完美,謝謝! – Jim 2011-01-22 20:32:25