java网络编程(四)压缩对象传输
来源:互联网 发布:windows 进程通信 编辑:程序博客网 时间:2024/06/16 22:27
对象的压缩存储主要是采用的是GZIPInputStream以及相对应的GZIPOutputStream来实现的,将其中的对象进行压缩后发送到相应的客户端上,代码如下:
package com.sun.net.gzip;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.net.ServerSocket;import java.net.Socket;import java.util.zip.GZIPInputStream;import java.util.zip.GZIPOutputStream;/*** 类名: GzipServer* 包名: com.sun.net.gzip* 作者: Administrator* 时间: 2015年1月26日 下午3:58:40* 描述:*/public class GzipServer { public static void main(String[] args) throws IOException { ServerSocket server = new ServerSocket(10000); while (true) { Socket socket = server.accept(); socket.setSoTimeout(10 * 1000); invoke(socket); } } private static void invoke(final Socket socket) throws IOException { new Thread(new Runnable() { public void run() { GZIPInputStream gzipis = null; ObjectInputStream ois = null; GZIPOutputStream gzipos = null; ObjectOutputStream oos = null; try { gzipis = new GZIPInputStream(socket.getInputStream()); ois = new ObjectInputStream(gzipis); gzipos = new GZIPOutputStream(socket.getOutputStream()); oos = new ObjectOutputStream(gzipos); Object obj = ois.readObject(); User user = (User)obj; System.out.println("user: " + user.getName() + "/" + user.getPassword()); user.setName(user.getName() + "_new"); user.setPassword(user.getPassword() + "_new"); oos.writeObject(user); oos.flush(); gzipos.finish(); } catch (IOException ex) { ex.printStackTrace(); } catch(ClassNotFoundException ex) { ex.printStackTrace(); } finally { try { ois.close(); } catch(Exception ex) {} try { oos.close(); } catch(Exception ex) {} try { socket.close(); } catch(Exception ex) {} } } }).start(); } }
客户端程序代码如下:
package com.sun.net.gzip;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.net.InetSocketAddress;import java.net.Socket;import java.net.SocketAddress;import java.util.zip.GZIPInputStream;import java.util.zip.GZIPOutputStream;/** * 类名: GzipClient * 包名: com.sun.net.gzip * 作者: Administrator * 时间: 2015年1月26日 下午4:00:38 * 描述: */public class GzipClient { public static void main(String[] args) throws Exception { for ( int i = 0; i < 10; i++) { Socket socket = null; GZIPOutputStream gzipos = null; ObjectOutputStream oos = null; GZIPInputStream gzipis = null; ObjectInputStream ois = null; try { socket = new Socket(); SocketAddress socketAddress = new InetSocketAddress("localhost" , 10000); socket.connect(socketAddress, 10 * 1000); socket.setSoTimeout(10 * 1000); gzipos = new GZIPOutputStream(socket.getOutputStream()); oos = new ObjectOutputStream(gzipos); User user = new User( "user_" + i, "password_" + i); oos.writeObject(user); oos.flush(); gzipos.finish(); gzipis = new GZIPInputStream(socket.getInputStream()); ois = new ObjectInputStream(gzipis); Object obj = ois.readObject(); if (obj != null) { user = (User)obj; System. out.println( "user: " + user.getName() + "/" + user.getPassword()); } } catch(IOException ex) { ex.printStackTrace(); } finally { try { ois.close(); } catch(Exception ex) {} try { oos.close(); } catch(Exception ex) {} try { socket.close(); } catch(Exception ex) {} } } } }
0 0
- java网络编程(四)压缩对象传输
- java网络编程(三)传输对象
- Java Socket实战之四 传输压缩对象
- Java Socket实战之四 传输压缩对象
- Java Socket实战之四 传输压缩对象 .
- Java Socket实战之四 传输压缩对象
- Java Socket实战之四 传输压缩对象
- Java Socket实战之四 传输压缩对象
- Java Socket实战之四 传输压缩对象
- Java Socket实战之四 传输压缩对象
- Java Socket实战之四 传输压缩对象
- Java Socket实战之四 传输压缩对象
- Java Socket实战之四 传输压缩对象
- Java Socket实战之四:传输压缩对象
- Java Socket实战之四 传输压缩对象
- Java 网络编程 之 传输对象 Serialization 序列化
- Java网络编程_传输实体类对象
- JAVA 网络编程(TCP传输1)
- SQLITE 资料 方法
- leetcode -- Spiral Matrix II
- 从B树、B+树、B*树谈到R树
- cocos2d-x3.0的touch事件
- Android fragment介绍
- java网络编程(四)压缩对象传输
- C++ Virtual关键字实现动态绑定
- iOS开发网络数据之AFNetworking使用
- IOS学习之——导航3 平铺导航1:实现基于分屏的平铺导航
- 【Python笔记】从一段Bug代码来理解Python的Naming Rule
- 【Java并发编程】之四:守护线程与线程阻塞的四种情况
- 【ORACLE】redo和undo_改变向量
- JAVA 中BIO,NIO,AIO的理解
- Webtrends的跨域访客跟踪机制