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

Java中使用Socket发送Java对象实例需要完成以下几个步骤:

  1. 序列化Java对象实例:将Java对象实例转换成字节流,以便在网络传输中能够被传输。

  2. 创建Socket连接:需要在发送方和接收方创建Socket连接,可以使用Socket类和ServerSocket类完成。

  3. 发送字节流:通过Socket连接,将序列化的Java对象实例以字节流形式发送给接收方。

  4. 反序列化Java对象实例:接收方接收到字节流后,需要将字节流反序列化成Java对象实例。

下面是Java中使用Socket发送Java对象实例的示例:

示例1:发送方

public class Sender {
   public static void main(String[] args) {
      try {
         // 写入对象
         ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream("data.obj"));
         User user = new User("Tom", 18, "Beijing");
         objectOutputStream.writeObject(user);
         objectOutputStream.close();

         // 发送对象
         Socket socket = new Socket("localhost", 8888);
         FileInputStream fileInputStream = new FileInputStream("data.obj");
         OutputStream outputStream = socket.getOutputStream();
         byte[] buf = new byte[1024];
         int len;
         while ((len = fileInputStream.read(buf)) != -1) {
            outputStream.write(buf, 0, len);
         }
         socket.shutdownOutput();
         fileInputStream.close();
         outputStream.close();
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
}

示例2:接收方

public class Receiver {
   public static void main(String[] args) {
      try {
         //读取对象
         ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream("data.obj"));
         User user = (User) objectInputStream.readObject();
         objectInputStream.close();
         System.out.println(user.toString());

         //接收对象
         ServerSocket serverSocket = new ServerSocket(8888);
         Socket socket = serverSocket.accept();
         InputStream inputStream = socket.getInputStream();
         FileOutputStream fileOutputStream = new FileOutputStream("object.obj");
         byte[] buf = new byte[1024];
         int len;
         while ((len = inputStream.read(buf)) != -1) {
            fileOutputStream.write(buf, 0, len);
         }
         inputStream.close();
         fileOutputStream.close();
         socket.close();
         serverSocket.close();

         //反序列化对象
         ObjectInputStream objectInputStream1 = new ObjectInputStream(new FileInputStream("object.obj"));
         User user1 = (User) objectInputStream1.readObject();
         objectInputStream1.close();
         System.out.println(user1.toString());
      } catch (IOException | ClassNotFoundException e) {
         e.printStackTrace();
      }
   }
}

在示例中,我们通过一个User对象演示了如何在Java中使用Socket发送Java对象实例。首先,发送方需要将User对象序列化成字节流,然后通过Socket连接将字节流发送给接收方。接收方接收到字节流后,需要将字节流反序列化成User对象。通过上述示例,我们可以在Java中实现Socket通信并发送Java对象实例。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中使用Socket发送Java对象实例 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • MyBatis使用Zookeeper保存数据库的配置可动态刷新的实现代码

    下面我将为你详细讲解使用Zookeeper保存数据库的配置并实现动态刷新的实现过程。本文主要分为以下几个部分: MyBatis使用Zookeeper保存数据库的配置的原理 实现动态刷新的流程 代码实现及示例说明 1. MyBatis使用Zookeeper保存数据库的配置的原理 MyBatis使用Zookeeper保存数据库的配置,可以将配置信息保存在Zook…

    Java 2023年6月16日
    00
  • java 查找字符串所在的位置代码

    当我们在Java编程中需要查找某个字符串在原字符串中的位置时,可以使用Java自带的String类中的indexOf()方法来实现。以下是查找字符串所在位置的完整攻略: 第一步:创建String类型的字符串 首先需要创建一个String类型的字符串,作为原字符串进行查找操作。例如: String str = "Hello World!";…

    Java 2023年5月26日
    00
  • 浅析Java中的 new 关键字

    浅析Java中的 new 关键字 在Java中,new关键字是程序员经常使用的一种创建对象的方法。通过使用new关键字,程序员可以在运行时动态地创建对象并将其分配给内存。本文将对Java中的new关键字进行浅析,包括其作用、使用方法和一些注意事项。 作用 new关键字的主要作用是创建对象并将其分配给内存。在Java中,每个对象都必须通过new关键字进行创建,…

    Java 2023年5月26日
    00
  • springboot+jsonp解决前端跨域问题小结

    下面是“springboot+jsonp解决前端跨域问题小结”的详细攻略。 前言 在开发前后端分离的应用时,常常会遇到前端请求后端时跨域的问题。这个时候,可以采用jsonp方式来解决跨域问题。 引入依赖 在我们使用springboot+jsonp的时候,需要引入一下两个依赖: <dependency> <groupId>org.spr…

    Java 2023年5月26日
    00
  • Eclipse将Maven项目打成jar包的方法

    下面是关于“Eclipse将Maven项目打成jar包的方法”的完整攻略: 1. 确认项目pom.xml中已设置打包类型为jar 在pom.xml文件中确认如下代码是否已设置: <packaging>jar</packaging> 如果没有设置,则需要添加上述代码。修改完毕后,保存pom.xml文件并执行Maven的clean和ins…

    Java 2023年5月20日
    00
  • Java的Struts框架报错“InvalidChainException”的原因与解决办法

    当使用Java的Struts框架时,可能会遇到“InvalidChainException”错误。这个错误通常由以下原因之一起: 链无效:如果链无效,则可能会出现此错误。在这种情况下,需要检查链以解决此问题。 链配置错误:如果链配置错误,则可能会出现此错误。在这种情况下,需要检查链配置以解决此问题。 以下是两个实例: 例 1 如果链无效,则可以尝试检查链以解…

    Java 2023年5月5日
    00
  • Java SpringMVC的自定义异常类

    Java SpringMVC的自定义异常类 在 Java SpringMVC 中,异常处理是非常重要的一部分。通过自定义异常类,我们可以更好地处理异常情况,并提供更好的用户体验。本文将详细讲解如何创建和使用自定义异常类,包括如何创建异常类、如何在 Controller 中使用异常类、如何在全局异常处理器中处理异常等,并提供两个示例说明。 创建异常类 在 Ja…

    Java 2023年5月18日
    00
  • Java实现SHA-256加密算法的完全解析

    Java实现SHA-256加密算法的完全解析 SHA-256加密算法是目前应用最广泛的加密算法之一,本篇文章介绍如何在Java中实现SHA-256加密算法。 什么是SHA-256加密算法 SHA-256是一种哈希算法,将任意长度的二进制值映射为一个较短的固定长度的二进制值(通常是256位)。SHA-256算法基于SHA-2家族的算法,其中”256″表示哈希值…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部