java socket序列化_通过socket连接传递java对象(对象序列化)

本文介绍了如何通过Java的Socket实现对象的序列化和反序列化,以在客户端和服务器之间传递对象。示例中创建了一个Employee类实现Serializable接口,然后在Client和Server类中分别使用ObjectOutputStream和ObjectInputStream进行对象的发送和接收操作。
摘要由CSDN通过智能技术生成

当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个Java对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为Java对象。 把Java对象转换为字节序列的

这篇文章主要实现的是j:通过socket传递Java对象。采用的方法就是对象序列化。方法是:通过socket建立c/s连接;通过ObjectOutputStream,ObjectOutputStream 读写对象。唯一需要留意的是传递的java 对象需要实现Serializable标记接口。代码包括:java对象类,Employee; socket client类;server类。主要代码如下:java对象类:import java.io.*;import java.util.*;public class Employee implements Serializable {private int employeeNumber;private String employeeName;Employee(int num, String name) {employeeNumber = num;employeeName= name;}public int getEmployeeNumber() {return employeeNumber ;}public void setEmployeeNumber(int num) {employeeNumber = num;}public String getEmployeeName() {return employeeName ;}public void setEmployeeName(String name) {employeeName = name;}}client类:import java.io.*;import java.net.*;public class Client {

public static void main(String[] arg) {

try {

Employee joe = new Employee(150, "Joe");

System.out.println("employeeNumber= "

joe .getEmployeeNumber());

System.out.println("employeeName= "

joe .getEmployeeName());

Socket socketConnection = new Socket("127.0.0.1", 11111);

ObjectOutputStream clientOutputStream = new

ObjectOutputStream(socketConnection.getOutputStream());

ObjectInputStream clientInputStream = new

Object理解Java对象序列化——Serializable接口

转自 http://chenfeng0104.iteye.com/blog/620554 JavaJDK 概述:当一个类实现了Serializable接口(该接口仅为标记接口,不包含任何方法定义),表示该类可以序列化.序列化的目的是将一个实现了Serializable接口的对象InputStream(socketConnection.getInputStream());

clientOutputStream.writeObject(joe);

joe= (Employee)clientInputStream.readObject();

System.out.println("employeeNumber= "

joe .getEmployeeNumber());

System.out.println("employeeName= "

joe .getEmployeeName());

clientOutputStream.close();

clientInputStream.close();

} catch (Exception e) {System.out.println(e); }

}}Server类:import java.io.*;import java.net.*;public class Server {public static void main(String[] arg) {Employee employee = null;try {ServerSocket socketConnection = new ServerSocket(11111);System.out.println("Server Waiting");Socket pipe = socketConnection.accept();ObjectInputStream serverInputStream = newObjectInputStream(pipe.getInputStream());ObjectOutputStream serverOutputStream = newObjectOutputStream(pipe.getOutputStream());employee = (Employee )serverInputStream.readObject();employee .setEmployeeNumber(256);employee .setEmployeeName("John");serverOutputStream.writeObject(employee);serverInputStream.close();serverOutputStream.close();} catch(Exception e) {System.out.println(e);}}}上一篇: 关于session的详细解释下一篇: 从Rails的活动记录说说元数据编程http://www.west263.com以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值