Java对象网络传输常用于Java异构平台间数据的交互,Socket和HTTP均可以实现Java对象的网络传输,具体示例如下:

1、Socket实现Java对象的网络传输:

keeper Java工程:

UserInfo类:

package com.jd.vo;import java.io.Serializable;public class UserInfo implements Serializable{private static final long serialVersionUID = 3103317843148814898L;private int age;private String name;public String getAge() {return age;}public void setAge(String age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}

服务器端:

package com.jd.test;import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;import com.jd.vo.UserInfo;public class Server {public static void main(String[] args) {try {ServerSocket serverSocket = new ServerSocket(8080);Socket socket = serverSocket.accept();ObjectOutput objectOutput = new ObjectOutputStream(socket.getOutputStream());UserInfo userInfo = new UserInfo();userInfo.setAge(12);userInfo.setAddress("Tom");objectOutput.writeObject(userInfo);objectOutput.flush();objectOutput.close();serverSocket.close();} catch (Exception e) {e.printStackTrace();}}
}

venus Java工程:

UserInfo类:   同keeper工程UserInfo类

客户端:

package com.jd.test;import java.io.ObjectInput;
import java.io.ObjectInputStream;
import java.net.Socket;public class Client {public static void main(String[] args) {try {Socket socket = new Socket("192.168.3.55", 8080);ObjectInput objectInput = new ObjectInputStream(socket.getInputStream());UserInfo userInfo = (UserInfo) objectInput.readObject();objectInput.close();System.out.println(userInfo);socket.close();} catch (Exception e) {e.printStackTrace();}}
}

2、HTTP实现Java对象的网络传输:

keeper Java Web工程:

UserInfo类:

package com.jd.vo;import java.io.Serializable;public class UserInfo implements Serializable{private static final long serialVersionUID = 3103317843148814898L;private int age;private String name;public String getAge() {return age;}public void setAge(String age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}

服务器端:

package com.jd.servlet;import java.io.IOException;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.jd.vo.UserInfo;@WebServlet("/DataServlet")
public class DataServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {ObjectOutput objectOutput = new ObjectOutputStream(response.getOutputStream());UserInfo userInfo = new UserInfo();userInfo.setAge(20);userInfo.setName("Tom");objectOutput.writeObject(userInfo);objectOutput.flush();objectOutput.close();}
}

venus Java工程:

UserInfo类:同keeper工程UserInfo类

客户端:

package com.jd.test;import java.io.ObjectInputStream;import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;import com.jd.vo.UserInfo;public class Test {public static void main(String[] args) {try {CloseableHttpClient httpclient = HttpClients.createDefault();HttpGet httpGet = new HttpGet("http://127.0.0.1:8080/keeper/DataServlet");// 创建http GET请求CloseableHttpResponse response = httpclient.execute(httpGet);// 执行请求if (response.getStatusLine().getStatusCode() == 200) {// 判断返回状态是否为200HttpEntity entity = response.getEntity();ObjectInputStream in = new ObjectInputStream(entity.getContent());UserInfo userInfo = (UserInfo) in.readObject();System.out.println(userInfo);}response.close();httpclient.close();} catch (Exception e) {e.printStackTrace();}}
}

序列化和反序列化(六)——Java对象的网络传输(一)相关推荐

  1. 利用序列化与反序列化对Java对象进行深度复制

    来源  http://lhg803.iteye.com/blog/407270 JDK的API中的java.lang.Object和Cloneable接口要完美实现深度clone时,都需要针对具体的类 ...

  2. Java对象序列化详解6,Java对象的序列化与反序列化详解

    把对象转换为字节序列的过程称为对象的序列化,把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种途径: Ⅰ . 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中 Ⅱ.  在网 ...

  3. Android编程实战——仿微信群聊-2——对象的网络传输

    Android编程实战--仿微信群聊-2--对象的网络传输 项目源代码移步github 上一章服务器端有个消息类MyMessage类没有细讲,这里就说一下MyMessage和更重要的网络中对象的传输( ...

  4. java反序列化多个对象_java 序列化与反序列化多个对象 抛出异常

    jdk 1.8 IEDA 设置可以追加写入后,向目标文件序列化多个同一对象,再序列化出来时,因为反序列化时头部信息只读取一次,报出异常. 请问该怎么解决?或者代码写的有问题? import java. ...

  5. java对象序列化存储到文件、从文件中反序列化读取java对象

    1.首先,对即将要操作的java对象的类需要实现序列化接口Serializable,代码如下: import java.io.Serializable; public class User imple ...

  6. 自定义序列化和反序列化的java实现

    2019独角兽企业重金招聘Python工程师标准>>> package j2se.IO;import java.io.*;/*** Created by jingqing.zhou ...

  7. 第二十五题:二叉树的序列化和反序列化(Java)

    题目要求: 二叉树的数的序列化和反序列话,二叉树实际是存储在内存中的,一旦断电或者是关机,二叉树的数据就会在内存中丢失.所以我们需要将二叉树的数据保存下来,这个过程叫做持久化或者序列化:将二叉树的数据 ...

  8. 文件绑定java socket多线程网络传输多个文件Strut2教程-java教程

    题记:写这篇博客要主是加深自己对文件绑定的认识和总结实现算法时的一些验经和训教,如果有错误请指出,万分感谢. 由于要需究研了下用java socket传输文件,由于要需传输多个文件,因此,采用了多线程 ...

  9. Java 中序列化与反序列化

    一. 序列化和反序列化概念 Serialization(序列化)是一种将对象以一连串的字节描述的过程:反序列化deserialization是一种将这些字节重建成一个对象的过程.将程序中的对象,放入文 ...

  10. Java序列化与反序列化的深度思考

    目录 1.序列化与反序列化的作用 2.序列化协议 2.1 JDK序列化协议 2.1.1  Externalizable与Serializable的异同 2.2 Google ProtocolBuf 协 ...

最新文章

  1. 拨号用户如何使用局域网上的LinuxSamba服务器
  2. C++打印STAIRS 图案算法(附完整源码)
  3. java学习笔记(4)
  4. [html] 页面的重绘和回流是什么?
  5. 使用mybatis操作AS400数据库
  6. android 6.0适应的机型,提升用户体验 可升Android 6.0机型盘点
  7. Js 怎么遍历json对象所有key及根据动态key获取值(根据key值获取相应的value值)...
  8. Java基础:如何读取控制台输入?如何读取字符?
  9. ubuntu16.04使用ipv6
  10. MySQL授权root
  11. dedecms 判断是否有值然后显示
  12. nginx利用geo模块做限速白名单以及geo实现全局负载均衡的操作记录
  13. 项目的webinf文件在哪_PMP章节练习(第四章:项目整合管理)
  14. 一文讲懂什么是vlan、三层交换机、网关、DNS、子网掩码、MAC地址
  15. 安装包制作工具 SetupFactory 详解
  16. css字体浏览(转)
  17. Topaz Plugins Bundle 2018 for Mac(PS插件滤镜特效包)
  18. 论文阅读:(NIPS 2021)NeRV: Neural Representations for Videos
  19. 非常详细的图文安装wordpress安装教程
  20. pathon的安装与环境部署,数据类型

热门文章

  1. ADO.NET DataReader对象简介
  2. mount: RPC: Unable to receive; errno = Connection refused 的解决方法
  3. 4.15Day20加密模块,表格操作模块
  4. 李洪强iOS经典面试题30-一个区分度很大的面试题
  5. 简单实用的 Ubuntu 快捷键
  6. Group By和Order By的总结
  7. 高性能的MySQL(8)优化服务器配置一安全与稳定
  8. Model to Text工具Acceleo使用教程(六)——模板服务
  9. 关于RCP引用jar包的几个问题。
  10. 9.凤凰架构:构建可靠的大型分布式系统 --- 可靠通信