用同步socket(語言隨意)來請求數(shù)據(jù),建立請求之后sendHTTPRequest頭,然后就可以recv服務(wù)器的Response了.但是數(shù)據(jù)的結(jié)束應(yīng)該怎樣判斷呢?(緩沖區(qū)大小是4096)判斷接收的數(shù)據(jù)與緩沖區(qū)大小對比,如果小于說明數(shù)據(jù)已經(jīng)結(jié)束:如果最后一個包的大小恰好是4096,這樣我認為數(shù)據(jù)還沒結(jié)束,然后繼續(xù)recv,就會阻塞.用非阻塞socket,如果在接收過程中有空數(shù)據(jù),則說明數(shù)據(jù)已經(jīng)結(jié)束:數(shù)據(jù)中間可能會有延遲,如果這時出現(xiàn)不連續(xù),會誤認為數(shù)據(jù)已經(jīng)結(jié)束.HTTP相應(yīng)頭的信息:不是所有的響應(yīng)都包含Content-Length所以正確的httpclient實現(xiàn)這方面的是怎樣的.------UPDATE@2015/3/14------后來在StackOverflow找到了相應(yīng)問題的回答,在此貼下鏈接http://stackoverflow.com/questions/4824451/detect-end-of-http-request-body.同時也感謝@xelz的耐心回答,采納為答案.
用socket接收http的數(shù)據(jù), 如何判斷數(shù)據(jù)的結(jié)束
猛跑小豬
2019-04-16 17:05:16