流長連線不關閉,如果讀取長度。

2021-07-26 23:50:58 字數 785 閱讀 8527

我嘗試過使用read() = -1這種方法來判斷是否讀完位元組流

datainputstream in =newdatainputstream(socket

.getinputstream());   

bytearrayoutputstream swapstream =newbytearrayoutputstream();   

intread = 0

;   

while( (read = in.read()) != -1

)   

結果還是不行,如果socket

沒有接收到資料,它不會返回-1,所以這個迴圈就一直在等著。。直到把socket

關閉才會退出迴圈。。

1.報文需要特定格式,報文頭顯示整個報文字節長度.

讀取流時new string(char, 0, br.read(char)) .getbytes的長度累加,

累加到報文字節長度則退出迴圈.

與檔案流區別是,檔案流有結尾標誌.也是約定好的

流是什麼?就是一堆不知道是啥的連續資料。那麼如何界定邊界呢?

1 提前定義,告訴對方,我給你1000個位元組

2 約定結束標誌,比如大家約定ascii的0就是結束,但要求你的資料內部可不能有0出現哦

3 你關閉連線好了,對方就認為結束了,

http1.1是第一種,有個contentlength, http1.0是第三種,直接關閉連線。

HTTP長連線和WebSocket長連線的區別

要理解http長連線和websocket長連線的區別,首先要理解一下什麼是http的長連線和短連線。首先需要消除乙個誤解 http協議是基於請求 響應模式的,因此客戶端請求後只要服務端給了響應,本次http請求就結束了,沒有長連線這一說。那麼自然也就沒有短連線這一說了。所謂的http分為長連線和短連...

長連線 短連線

長連線在web中的運用 如果沒有客戶端大量的訪問,可以採用html5的serversocket長連線 例如hudson 執行時會實時的返回當前執行的結果 vmstat 監控 b 長連線 資料庫連線 短連線 http連線 b b 一 長連線與短連線 b 長連線 client方與server方先建立連線...

長連線 短連線

http協議的長連線和短連線,實質上是tcp協議的長連線和短連線。http屬於應用層協議,在傳輸層使用tcp協議,在網路層使用ip協議。ip協議主要解決網路路由和定址問題,tcp協議主要解決如何在ip層之上可靠的傳遞資料報。http是乙個無狀態的面向連線的協議,無狀態不代表http不能保持tcp連線...