[英]Sending compressed data via socket
我必須在java中創建一個日志服務器,一個任務是發送壓縮的數據。 現在我用純文本逐行發送它,但我必須壓縮它。 服務器處理“HTTP like”請求。 例如,我可以獲得發送“GET xxx.log”的日志。 這將建立到服務器的TCP連接,帶有標頭和日志的服務器響應,並關閉連接。 客戶端逐行讀取並分析每個LOG條目。 我嘗試了一些沒有成功的方法。 我的主要問題是我不知道每一行的結束位置(在客戶端大小)。 任何想法?
在服務器上使用GZIPOutputStream,在客戶端使用GZIPInputStream,其周圍有一個InputStreamReader,周圍有一個BufferedReader。 然后只讀行。
最有意義的是這樣的事情
您可以查看HTTP Range標頭。 客戶端可以請求一系列字節,服務器將只返回那些字節。 使用GZIP壓縮。
在請求部分日志之前,您可以從客戶端調用一個將提供帶字節范圍的索引的操作。
HTTP標頭有很多開銷,因此您可以考慮一次發送100行或更多。
最后,查看分塊傳輸編碼,它允許您將數據流式傳輸到客戶端。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.