Compressão e descompressão de fluxos
Encontrei este artigo sobre um servidor proxy simples implementado em JAVA:
http: //www.java2s.com/Code/Java/Network-Protocol/Asimpleproxyserver.ht
O código simplesmente obtém algum fluxo do cliente, depois o envia para o servidor e depois recebe o fluxo do servidor e envia a resposta ao cliente. O que eu gostaria de fazer é compactar esses fluxos antes de serem enviados e descompactar depois que forem recebido
Encontrei a classeGZIPInputStream
mas não sei como usá-lo e o que encontrei na internet não me ajudou. Ou eu não entendi muito ou não foi uma boa solução para mim.
Minha idéia também é essa, mas não tenho certeza se está tudo bem:
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);
}
Agora, os dados enviados ao servidor devem ser compactados antes do envio (mas não tenho certeza se é uma solução correta). É ISSO
Agora imagine que o servidor me envie os dados compactados. Portanto, este fluxo:
final InputStream streamFromServer = server.getInputStream();
é comprimido.
Como posso descompactá-lo e gravar no
final OutputStream streamToClient = client.getOutputStream();
Obrigado pela ajuda pessoal