荟萃馆

位置:首页 > IT认证 > SUN认证

关于Java Socket网络传输的序列化机制

SUN认证1.77W

采用Java Socket网络传输的`序列化机制,将对象“压扁”成二进制字节,将二进制字节在网络中传输;

关于Java Socket网络传输的序列化机制

自定义协议,将对象用字符串描述出来,将字符串用二进制表示,在网络中传输,在另外一边用相反的策略解析这个字符串,重新构造业务对象,这个方法能够在异构平台中进行传输而不变形,但是需要额外的编写“压扁”和“充气”的代码;

我们这里用第一种方法:

age ;

rt ArrayInputStream;

rt ArrayOutputStream;

rt ;

rt InputStream;

rt OutputStream;

rt ception;

rt tStream;

rt ctInputStream;

rt ctOutputStream;

rt utStream;

rt ;

ic class Persistence {

ic static void main(String[] args) {

[] bs = tes();

16.//在网络中进行传输

ytes(bs);

18.}

ic static byte[] toBytes() {

on p = new Person();

ame("corey");

all(171);

irthday(new Date());

ddress(new Address("yiyang", "ziyang"));

ArrayOutputStream out = new

ByteArrayOutputStream();

{

ctOutputStream oout = new ObjectOutputStream(out);

eObject(p);

29.} catch (IOException e) {

30.// TODO Auto-generated catch block

tStackTrace();

32.}

rn teArray();

34.}

ic static void getBytes(byte[] bs) {

{

ArrayInputStream byteIn = new

ByteArrayInputStream(bs);

ctInputStream in = new ObjectInputStream(byteIn);

on p = (Person) Object();

tln(ame());

tln(all());

tln(irthday());

tln(ddress()ity());

t(ddress()treet());

45.} catch (Exception e) {

46.// TODO Auto-generated catch block

tStackTrace();

48.}

49.}

50.}

其中服务端代码片段为:

= equestSocket()nputStream();

= equestSocket()utputStream();

[] bs = tes();

tln("发送数字长度:"+th);

e(bs);

equestSocket()e();

57.客户端代码片段为:

tStream in = nputStream();

[] bin = new byte[200];

length = 0;

e ((length = (bin)) != -1) {

tln("length:" + length);

ytes(bin);

64.}