Сжатие и распаковка потоков

Я нашел эту статью о простом прокси-сервере, реализованном на 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();

Спасибо за помощь, ребята!

8
задан BalusC 18 November 2011 в 22:12
поделиться