服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

使用java来实现网络传输数据压缩的实例

1:选择或者创建一个新的套接字。(可以参看sun´s的"创建一个典型的套接字")。

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() );
}
// 剩下的是你自己的程序实现
}

现在你的通信数据得到了压缩.

扫描关注微信公众号