`
lixinye0123
  • 浏览: 335767 次
  • 性别: Icon_minigender_1
  • 来自: 温州
社区版块
存档分类
最新评论

通过socket传递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             ObjectInputStream(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 = new   
            ObjectInputStream(pipe.getInputStream());

         ObjectOutputStream serverOutputStream = new
            ObjectOutputStream(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);
      }
   }

}



分享到:
评论

相关推荐

    Socket通信之序列化对象通信

    服务器接收并反序列化这个字节流,恢复出Student对象,从而完成了一次基于Socket的序列化对象通信。 总结,Socket通信结合对象序列化提供了一种有效的方式,让网络上的不同系统可以共享和交换自定义的Java对象。这...

    java对象序列化.ppt

    在网络中传递对象,可以通过Socket编程实现,将序列化的对象作为数据流在网络中传输。客户端和服务器端分别使用`ObjectOutputStream`和`ObjectInputStream`进行读写。 自定义对象序列化,可以重写`writeObject()`和...

    使用Socket传递对象

    Java序列化是将对象转换为字节流的过程,以便于存储或在网络上传输。要使一个类可序列化,你需要在类定义上实现`Serializable`接口。例如: ```java public class MyObject implements Serializable { // 类的属性...

    Java对象序列化使用基础

    所谓对象序列化就是将对象的状态转换成字节流,以后可以通过这些值再生成相同状态的对象。这个过程也可以通过...像RMI、Socket、JMS、EJB它们中的一种,彼此为什么能够传递Java对象,当然都是对象序列化机制的功劳。

    java客户端服务器传递对象

    "java客户端服务器传递对象"这个主题涉及到的核心知识点主要包括Java RMI(Remote Method Invocation,远程方法调用)、对象序列化以及网络通信的基本原理。下面我们将深入探讨这些概念。 1. **Java RMI**: RMI是...

    socket objectoutputstream 传对象 例子

    而ObjectOutputStream则是一个序列化流,用于将Java对象转换为字节流,以便通过网络传输。 首先,我们来理解Socket。Socket是Java的java.net包中的类,它主要用于网络编程,创建TCP连接。当你想要在一个应用程序中...

    Javas_socket传递JavaBean(案例)

    Java序列化是将对象转换为字节流的过程,以便在网络中传输或持久化存储。要使一个类可序列化,需要实现`java.io.Serializable`接口。例如,如果我们有一个名为`MyBean`的JavaBean: ```java public class MyBean ...

    java 与C语言使用socket通信传递结构体数据

    总之,Java与C语言通过Socket通信传递结构体数据,需要在两者之间建立共同的数据表示方式,并实现相应的序列化和反序列化策略。这通常涉及到对网络协议、数据编码和解码的深入了解。在实际开发中,选择合适的序列化...

    Java序列化技术的探讨.pdf

    本文将介绍几种常用的Java序列化技术,并通过比较、分析这些技术在功能、序列化后的字节数和序列化、反序列化速度方面的差异,得出了在什么应用环境下应该如何选择序列化技术框架。 对象序列化概述 对象序列化是一...

    Java中使用Socket发送Java对象实例

    因此,我们需要使用对象流(Object Stream)来序列化和反序列化对象,以便在网络间传递。 1. **序列化与反序列化**: 在Java中,为了让一个对象能够被序列化,该类必须实现`java.io.Serializable`接口。例如,我们...

    对象序列化TCP传输

    4. **发送序列化对象**:通过已建立的TCP连接,将序列化后的字节流写入Socket的输出流。 5. **接收和反序列化**:在另一端,从Socket的输入流读取字节流,然后使用相应的反序列化方法恢复为对象。 6. **关闭连接**...

    Java序列化(Serializable)与反序列化__1.docx

    Java序列化(Serializable)是Java平台提供的一种持久化机制,允许将对象的状态转换为字节流,以便存储到磁盘、数据库中,或者在网络上传输。这一过程被称为对象的序列化。反之,将字节流恢复为原来的对象状态称为反...

    03-03-02-序列化和反序列化1

    2. 序列化对象:使用`ObjectOutputStream`的`writeObject()`方法将对象写入输出流。 3. 反序列化对象:使用`ObjectInputStream`的`readObject()`方法从输入流中读取对象。 在Java中,序列化不仅涉及对象的属性,还...

    java socket通信自定义消息协议

    序列化是将Java对象转化为字节数组的过程,反序列化则是相反的操作。 在实际应用中,为了提高效率和健壮性,还需要考虑错误处理、多线程、网络异常等问题。例如,设置超时时间防止死锁,使用BufferedReader或...

    qt与java之间socket通讯

    总结,Qt与Java之间的Socket通信涉及了网络编程、JSON序列化和反序列化、多线程处理(特别是在Java中处理并发连接时)、以及错误处理等多个技术点。理解并熟练掌握这些知识点,可以构建可靠的跨平台通信系统。

    Java使用传统socket手写的远程RPC框架调用框架

    4. **序列化与反序列化**:在网络通信中,对象需要被转换为可传输的字节流,这个过程就是序列化。Java提供了多种序列化方式,如Java内置的序列化(implements Serializable)、protobuf、JSON等。在RPC框架中,我们...

    Android-byte数据序列化成对象对象转化成二进制数据

    在Android开发中,数据交换和存储常常涉及到对象的序列化和反序列化。这是一个关键的环节,特别是当数据需要通过网络(如Socket)或者蓝牙进行传输时,因为这些通信方式通常要求以二进制格式传输数据。本篇将详细...

    java多组播中传递对象

    - 创建一个发送类,负责序列化对象并将其放入`DatagramPacket`,然后通过`MulticastSocket`发送。 - 创建一个接收类,持续监听多组播组,接收到数据包后反序列化对象。 6. **安全性与性能**: - 序列化可能带来...

Global site tag (gtag.js) - Google Analytics