JavaSocket网络传输的序列化机制

Java Socket网络传输如何才能更好的完成自己的任务?下面我们就来看看有关的代码介绍,希望大家有所收获。在网络中的两台机器中传输对象,前提首先是基于同一个平台,这是序列化的基础,所以这里主要有两种做法:

网站的建设创新互联公司专注网站定制,经验丰富,不做模板,主营网站定制开发.小程序定制开发,H5页面制作!给你焕然一新的设计体验!已为报废汽车回收等企业提供专业服务。

采用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. }

其中服务端代码片段为:

 
 
 
  1. in = this.getRequestSocket().getInputStream();
  2. out = this.getRequestSocket().getOutputStream();
  3. byte[] bs = Persistence.toBytes();
  4. System.out.println("发送数字长度:"+bs.length);
  5. out.write(bs);
  6. this.getRequestSocket().close();
  7. 客户端代码片段为:
  8. InputStream in = request.getInputStream();
  9. byte[] bin = new byte[200];
  10. int length = 0;
  11. while ((length = in.read(bin)) != -1) {
  12. System.out.println("length:" + length);
  13. Persistence.getBytes(bin);
  14. }

以上就是对Java Socket网络传输的详细介绍,希望大家有所帮助。

文章名称:JavaSocket网络传输的序列化机制
文章源于:http://www.hantingmc.com/qtweb/news15/235865.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联