黑马程序员_Java Socket网络传输的序列化机制
2013-08-27 19:24
507 查看
Java Socket网络传输的序列化机制
Java Socket网络传输如何才能更好的完成自己的任务?下面我们就来看看有关的代码介绍,希望大家有所收获。在网络中的两台机器中传输对象,前提首先是基于同一个平台,这是序列化的基础,所以这里主要有两种做法:
采用Java Socket网络传输的序列化机制,将对象“压扁”成二进制字节,将二进制字节在网络中传输;
自定义协议,将对象用字符串描述出来,将字符串用二进制表示,在网络中传输,在另外一边用相反的策略解析这个字符串,重新构造业务对象,这个方法能够在异构平台中进行传输而不变形,但是需要额外的编写“压扁”和“充气”的代码;
我们这里用第一种方法:
Java Socket网络传输如何才能更好的完成自己的任务?下面我们就来看看有关的代码介绍,希望大家有所收获。在网络中的两台机器中传输对象,前提首先是基于同一个平台,这是序列化的基础,所以这里主要有两种做法:
采用Java Socket网络传输的序列化机制,将对象“压扁”成二进制字节,将二进制字节在网络中传输;
自定义协议,将对象用字符串描述出来,将字符串用二进制表示,在网络中传输,在另外一边用相反的策略解析这个字符串,重新构造业务对象,这个方法能够在异构平台中进行传输而不变形,但是需要额外的编写“压扁”和“充气”的代码;
我们这里用第一种方法:
package stream.demo; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.OutputStream; import java.util.Date; public class Persistence { public static void main(String[] args) { byte[] bs = Persistence.toBytes(); //在网络中进行传输 Persistence.getBytes(bs); } public static byte[] toBytes() { Person p = new Person(); p.setName("corey"); p.setTall(171); p.setBirthday(new Date()); p.setAddress(new Address("yiyang", "ziyang")); ByteArrayOutputStream out = new ByteArrayOutputStream(); try { ObjectOutputStream oout = new ObjectOutputStream(out); oout.writeObject(p); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return out.toByteArray(); } public static void getBytes(byte[] bs) { try { ByteArrayInputStream byteIn = new ByteArrayInputStream(bs); ObjectInputStream in = new ObjectInputStream(byteIn); Person p = (Person) in.readObject(); System.out.println(p.getName()); System.out.println(p.getTall()); System.out.println(p.getBirthday()); System.out.println(p.getAddress().getCity()); System.out.print(p.getAddress().getStreet()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }其中服务端代码片段为:
in = this.getRequestSocket().getInputStream(); out = this.getRequestSocket().getOutputStream(); byte[] bs = Persistence.toBytes(); System.out.println("发送数字长度:"+bs.length); out.write(bs); this.getRequestSocket().close(); 客户端代码片段为: InputStream in = request.getInputStream(); byte[] bin = new byte[200]; int length = 0; while ((length = in.read(bin)) != -1) { System.out.println("length:" + length); Persistence.getBytes(bin); }
相关文章推荐
- Java Socket网络传输的序列化机制
- 黑马程序员_温习 网络编辑一 (个人笔记)摘要(网络概述---网络参考模型---网络传输要素---IP地址---端口----传输协议(UDP -- TCP)---Socket机制 )
- 黑马程序员--10.网络编程--02.【网络传输三要素在Java中的体现】【TCP和UDP概念】【Socket基本概念】
- Java 网络编程 之 传输对象 Serialization 序列化
- JAVA 通过网络传输对象(对象序列化)简单示例
- 黑马程序员-java网络编程基础——socket编程基础
- 黑马程序员--Java基础学习之网络编程(TCP、UDP、Socket、模拟发送和接收数据)
- .Net网络通讯编程[利用Socket实现字串、文件、序列化对象传输]--使用封装的网络服务1
- Net网络通讯编程[利用Socket实现字串、文件、序列化对象传输]--前面6篇博文全部源代码下载地址
- 黑马程序员----------Java网络编程(Socket编程)笔记
- .Net网络通讯编程[利用Socket实现字串、文件、序列化对象传输]--使用封装的网络服务3[聊天室][使用IE浏览本页]
- 高性能数据序列化库,可序列化为binary,也可序列化为json,支持C++ java python php objectc 语言,兼容json数据格试,可以互相转换,跨语言交换数据,网络传输,远程调
- java--基于socket的网络传输开发
- 黑马程序员——Java---Socket网络编程原理
- 黑马程序员——java基础——Socket网络编程
- JAVA之旅(三十二)——JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用
- .Net网络通讯编程[利用Socket实现字串、文件、序列化对象传输]--使用封装的网络服务2
- .Net网络通讯编程[利用Socket实现字串、文件、序列化对象传输]--使用封装的网络服务4[聊天室][使用IE浏览本页]
- 黑马程序员——Java网络编程之UDP传输
- 黑马程序员 Java网络传输UDP和TCP协议