我找到了一篇关于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();
谢谢帮忙,大家!