【通讯】采用ZLIB实现传输过程的数据压缩

Posted on Mon 16 June 2008 in 我用(IT) • Tagged with java, 通讯协议

- 关于ZLIB
zlib是提供数据压缩的一个函数库,使用抽象化的DEFLATE演算法。
zlib是开源的,做为一种事实上的业界标准,因其代码的可移植性,宽松的授權许可以及较小的内存占用,zlib在许多嵌入式设备中也有应用。

http://en.wikipedia.org/wiki/ZLIB

- 代码示意

/**
 *
 * Put Object to compressed Byte Array
 *
 */
 protected byte[] deflate(Object object) throws IOException{
 
  ByteArrayOutputStream baos = new ByteArrayOutputStream();
  Deflater def = new Deflater (Deflater.BEST_COMPRESSION);
  DeflaterOutputStream dos = new DeflaterOutputStream(baos, def);
 
  ObjectOutputStream out = new ObjectOutputStream(dos);
  out ...


Continue reading

用HTTP PUT方式传输数据

Posted on Thu 08 May 2008 in 我用(IT) • Tagged with HTTP, java

- 功能说明
客户端通过发起http put请求,把文件传送到服务器上

- Client
用Java实现,有两种方案:
1. Jakarta HttpClient

2. 用JDK自带的HttpURLConnection
//URL地址中包含文件路径和名称的信息
URL url = new URL("http://...");  
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true)
conn.setRequestMethod("PUT");
//getInputStream,写入数据
//读取状态

需要注意的地方:
1. 真实使用时需要认证
2. 传输资源的名称要包含在URL信息中
3. 注意对回传状态的处理

- Server
实现HttpServlet中的doPut方法,用Request.getInputStream读取数据
根据RFC1616中9.6 PUT的要求,回写状态

- 参考
HTTP specification


Continue reading