java对面网络传输必须序列化,Java Socket网络传输的序列化机制

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

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

我们这里用第一种方法:

1.package stream.demo;

2.import java.io.ByteArrayInputStream;

3.import java.io.ByteArrayOutputStream;

4.import java.io.File;

5.import java.io.FileInputStream;

6.import java.io.FileOutputStream;

7.import java.io.IOException;

8.import java.io.InputStream;

9.import java.io.ObjectInputStream;

10.import java.io.ObjectOutputStream;

11.import java.io.OutputStream;

12.import java.util.Date;

13.public class Persistence {

14.public static void main(String[] args) {

15.byte[] bs = Persistence.toBytes();

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

17.Persistence.getBytes(bs);

18.}

19.public static byte[] toBytes() {

20.Person p = new Person();

21.p.setName("corey");

22.p.setTall(171);

23.p.setBirthday(new Date());

24.p.setAddress(new Address("yiyang", "ziyang"));

25.ByteArrayOutputStream out = new

ByteArrayOutputStream();

26.try {

27.ObjectOutputStream oout = new ObjectOutputStream(out);

28.oout.writeObject(p);

29.} catch (IOException e) {

30.// TODO Auto-generated catch block

31.e.printStackTrace();

32.}

33.return out.toByteArray();

34.}

35.public static void getBytes(byte[] bs) {

36.try {

37.ByteArrayInputStream byteIn = new

ByteArrayInputStream(bs);

38.ObjectInputStream in = new ObjectInputStream(byteIn);

39.Person p = (Person) in.readObject();

40.System.out.println(p.getName());

41.System.out.println(p.getTall());

42.System.out.println(p.getBirthday());

43.System.out.println(p.getAddress().getCity());

44.System.out.print(p.getAddress().getStreet());

45.} catch (Exception e) {

46.// TODO Auto-generated catch block

47.e.printStackTrace();

48.}

49.}

50.}

其中服务端代码片段为:

51.in = this.getRequestSocket().getInputStream();

52.out = this.getRequestSocket().getOutputStream();

53.byte[] bs = Persistence.toBytes();

54.System.out.println("发送数字长度:"+bs.length);

55.out.write(bs);

56.this.getRequestSocket().close();

57.客户端代码片段为:

58.InputStream in = request.getInputStream();

59.byte[] bin = new byte[200];

60.int length = 0;

61.while ((length = in.read(bin)) != -1) {

62.System.out.println("length:" + length);

63.Persistence.getBytes(bin);

64.}

【关于Java Socket网络传输的序列化机制】相关文章:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值