我發現這篇文章關於Java實現的簡單的代理服務器:壓縮和解壓流
http://www.java2s.com/Code/Java/Network-Protocol/Asimpleproxyserver.htm
的代碼只是獲取來自客戶端的一些數據流,之後發送到服務器,並從獲取流之後服務器並將響應發送給客戶端。我想要做的就是在發送它之前壓縮這些流,並在收到它之後解壓縮。
我發現類GZIPInputStream
,但我不知道如何使用它,以及我在互聯網上找到的東西沒有幫助我。我不是那麼瞭解,或者對我來說這不是一個好的解決方案。
我的想法是太那個,但我不知道,如果它的確定:
final InputStream streamFromClient = client.getInputStream();
final OutputStream streamToClient = client.getOutputStream();
final InputStream streamFromServer = server.getInputStream();
final OutputStream streamToServer = server.getOutputStream();
InputStream gzipStream = new GZIPInputStream(streamFromClient);
try
{
while ((bytesRead = gzipStream.read(request)) != -1)
{
streamToServer.write(request, 0, bytesRead);
streamToServer.flush();
}
}
catch (Exception e) {
System.out.println(e);
}
現在發送到服務器的數據應該在發送之前被壓縮(但我不知道這是否是一個正確的解決方案)。是嗎?
現在設想服務器向我發送壓縮數據。 所以這個流:
final InputStream streamFromServer = server.getInputStream();
被壓縮。
我怎麼能解壓縮並寫入
final OutputStream streamToClient = client.getOutputStream();
感謝您的幫助,夥計們!
cross-post:[java-forums.org - compress-decompress-streams](http://www.java-forums.org/new-java/51442-compress-decompress-streams.html) –