网络传输大数据时,紧缩网络传输数据的解决方案ITeye - 超凡娱乐

网络传输大数据时,紧缩网络传输数据的解决方案ITeye

2019年02月28日11时10分49秒 | 作者: 香巧 | 标签: 数据,紧缩,创立 | 浏览: 2203

       效劳体系优化到必定程度后,进步功能的瓶颈或许就在于数据的网络传输上。因为在一天的任何时间内,都有或许在客户端和效劳器端之间传送不计其数的大数据,这需求占用很大的带宽,严重影响客户端的体会。 

       一种或许的解决办法,咱们期望可以在把数据回来给客户端前,先紧缩这些数据。假如传输的是文件,图片之类的,网络现已有了许多介绍。可是咱们所需求的对网络传输数据进行紧缩。
    当运用ZipInputStream 和 ZipOutputStream紧缩处理时,并没有强制你只能紧缩文件。仅有要注意的是你有必要把数据转换为字节数组的方式。

以下是创立一个RMI方式的套接字的扼要过程:
1、挑选或许创立一个新的套接字.
2、创立一个效劳器端的套接字.
3、创立一个RMIClientSocketFactory
4、创立一个RMIServerSocketFactory
5、创立一个承继了UnicastRemoteObjec的长途目标,然后运用新的factories.

依据这一大致的主意,咱们来看每一步怎么详细的完成.


过程1: 创立ZipSocket;因为要进行Zip紧缩,咱们从头创立这样的套接字

import java.io.InputStream;
import java.io.OutputStream;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
import java.net.Socket;
public class ZipSocket extends Socket {
 private InputStream in;
 private OutputStream out;
 public ZipSocket() { super(); }
 public ZipSocket(String host, int port) throws IOException {
 super(host, port);
 public InputStream getInputStream() throws IOException {
 if (in  null) {
 in = new ZipInputStream(super.getInputStream());
 return in;
 public OutputStream getOutputStream() throws IOException {
 if (out  null) {
 out = new ZipOutputStream(super.getOutputStream());
 return out;
 public synchronized void close() throws IOException {
 OutputStream o = getOutputStream();
 o.flush();
 super.close();



过程2: 创立ZipServerSocket

import java.net.ServerSocket;
import java.net.Socket;
import java.io.IOException;
public class ZipServerSocket extends ServerSocket {
 public ZipServerSocket(int port) throws IOException { 
 super(port);
 public Socket accept() throws IOException { 
 Socket socket = new ZipSocket();
 implAccept(socket);
 return socket;



过程3:创立ZipClientSocketFactory
客户端的factory的创立有必要遵从以下的方式:

import java.io.IOException; 
import java.io.Serializable; 
import java.net.Socket; 
import java.rmi.server.RMIClientSocketFactory;
public class ZipClientSocketFactory implements RMIClientSocketFactory, Serializable { 
 public Socket createSocket(String host, int port) throws IOException {
 ZipSocket socket = new ZipSocket(host, port);
 return socket;



过程4:创立ZipServerSocketFactory

import java.io.IOException; 
import java.io.Serializable; 
import java.net.ServerSocket; 
import java.rmi.server.RMIServerSocketFactory; 
public class ZipServerSocketFactory implements RMIServerSocketFactory, Serializable { 
 public ServerSocket createServerSocket(int port) throws IOException { 
 ZipServerSocket server = new ZipServerSocket(port); 
 return server; 



过程5: 创立一个承继了UnicastRemoteObjec的长途目标,然后运用新的factories

public class YourRMIObject extends UnicastRemoteObject {
 public YourRemoteObject( int port ) {
 super( port, new ZipClientSocketFactory(), new ZipServerSocketFactory() );
 // 剩余的是你自己的程序完成



至此,你的通讯数据现已得到了紧缩。

 

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表超凡娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章

阅读排行

  • 1
  • 2
  • 3

    vim装备ITeye

    文件,设置,状况
  • 4

    vim装备ITeye

    文件,设置,状况
  • 5

    WebService JaxITeye

    功用,客户端,运用
  • 6

    easymock快速入门ITeye

    运用,断语,机制
  • 7
  • 8
  • 9
  • 10

    java 编程技术ITeye

    日志,装备,信息