java网络(socket)中传输序列化对象

硅谷探秘者 3010 0 0


java网络(socket)中传输序列化对象


Person类,注意(两个项目中的Person类字节码要相同)

package socket;
import java.io.Serializable;
public class Person implements Serializable{
	/**
	 * 序列化id
	 */
	private static final long serialVersionUID = -6172176307319540879L;
	private String name;
	private Integer age;
	private String address;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public Person() {
		super();
		// TODO Auto-generated constructor stub
	}

	public Person(String name, Integer age, String address) {
		super();
		this.name = name;
		this.age = age;
		this.address = address;
	}
	@Override
	public String toString() {
		return "Person [name=" + name + ", age=" + age + ", address=" + address + "]";
	}
}


服务端代码:

package socket;

import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class SocketServerTest {
  public static void main(String[] args) throws Exception {
    // 监听指定的端口
    int port = 8989;
    ServerSocket server = new ServerSocket(port);
    
    System.out.println("服务端等待连接");
    // server将一直等待连接的到来
    Socket socket = server.accept();
    InputStream inputStream = socket.getInputStream();
    ObjectInputStream in=new ObjectInputStream(inputStream);
    Person p = (Person) in.readObject();
    System.out.println("收到客户端消息:" +p);

    //返回给客户端消息
    OutputStream outputStream = socket.getOutputStream();
    Person s=new Person("服务端",102,server.getInetAddress().getHostAddress());
    //s为传送对象
    ObjectOutputStream out=new ObjectOutputStream(outputStream);
    out.writeObject(s);
    out.flush();
    
    inputStream.close();
    outputStream.close();
    out.close();
    in.close();
    socket.close();
    server.close();
  }
}


menu.saveimg.savepath20190401174828.jpg


客户端代码:

package socket;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.Socket;
public class SocketClient {
  public static void main(String args[]) throws Exception {
    // 要连接的服务端IP地址和端口
    String host = "127.0.0.1";
    int port = 8989;
    // 与服务端建立连接
    Socket socket = new Socket(host, port);
    // 建立连接后获得输出流
    OutputStream outputStream = socket.getOutputStream();
    Person p=new Person("客户1",12,socket.getInetAddress().getHostAddress());
    //p为传送对象
    ObjectOutputStream o= new ObjectOutputStream(socket.getOutputStream());
    o.writeObject(p);
    o.flush();
    //通过shutdownOutput高速服务器已经发送完数据,后续只能接受数据
    socket.shutdownOutput();
    
    InputStream inputStream = socket.getInputStream();
    ObjectInputStream in=new ObjectInputStream(inputStream);
    Person s= (Person) in.readObject();
    System.out.println("服务端回复消息:" + s);
    in.close();
    o.close();
    inputStream.close();
    outputStream.close();
    socket.close();
  }
}


2.jpg


评论区
请写下您的评论...
暂无评论...
猜你喜欢
java基础 3788 递性。是把转换成有字节流,以便在或者保存在本地文件后的字节流保存了Java的状态以及相关的描述信息。机制的核心作用就是状态的保存与重建。反:客户端从
official 875 《计算机第七版谢希仁》 [TOC]  媒体也称为介质或媒介,它就是数据系统在发送器和接收器之间的物理通路。媒体可分为两大类,即导引型媒体和非导引型媒体(这里的“导引
java序列化储存 2781 和反请参考:http://www.jiajiajia.club/blog/artical/yjw520/161源码下载地址:http://photo.jiajiajia.club
java虚拟机(jvm) 4454 Java的创建Java是一门面向的编程语言,在Java运行过程无时无刻都有被创建出来。在语言层面上,创建(例如克隆、反)通常仅仅是一个new关键字而已,而在虚拟机,
official 751 《计算机第七版谢希仁》 [TOC]  在通信线路质量较差的年代,在数据链路层使用可靠协议曾经是一种好办法。因此,能实现可靠的高级数据链路控制HDLC(High
official 929 ”越宽,其所能的“最高数据率”也越高。 三、吞吐量  吞吐量(throughput)表示在单位时间内通过某个(或信道、接口)的实际的数据量。吞吐量更经常地用于现实世界的一种测量,以便
java基础 2658 失败的代码,因为没有考虑数组和集合的情况~!!!classFormatPrintf{publicstaticTvoidprint(Tt)throwsException{if(isPrimitive(t.getClass())){System.out.println(t);}System.out.println("{");dfs(t,0);System.out.println("}");}priva
official 1480 编码器和解码器在应用需要实现某种编解码器,将原始字节数据与自定义的消息进行互相转换。都是以字节码的数据形式来数据的,服务器编码数据后发送到客户端,客户端需要数据进行解码
归档
2018-11  12 2018-12  33 2019-01  28 2019-02  28 2019-03  32 2019-04  27 2019-05  33 2019-06  6 2019-07  12 2019-08  12 2019-09  21 2019-10  8 2019-11  15 2019-12  25 2020-01  9 2020-02  5 2020-03  16 2020-04  4 2020-06  1 2020-07  7 2020-08  13 2020-09  9 2020-10  5 2020-12  3 2021-01  1 2021-02  5 2021-03  7 2021-04  4 2021-05  4 2021-06  1 2021-07  7 2021-08  2 2021-09  8 2021-10  9 2021-11  16 2021-12  14 2022-01  7 2022-05  1 2022-08  3 2022-09  2 2022-10  2 2022-12  5 2023-01  3 2023-02  1 2023-03  4 2023-04  2 2023-06  3 2023-07  4 2023-08  1 2023-10  1 2024-02  1 2024-03  1 2024-04  1 2024-08  1
标签
算法基础 linux 前端 c++ 数据结构 框架 数据库 计算机基础 储备知识 java基础 ASM 其他 深入理解java虚拟机 nginx git 消息中间件 搜索 maven redis docker dubbo vue 导入导出 软件使用 idea插件 协议 无聊的知识 jenkins springboot mqtt协议 keepalived minio mysql ensp 网络基础 xxl-job rabbitmq haproxy srs 音视频 webrtc javascript 加密算法
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。