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