假设我有一个可序列化的类AppMessage.

我想把它作为byte[]个套接字传输到另一台机器,在那里它是从接收到的字节重建的.

我怎样才能做到这一点?

推荐答案

准备要发送的字节数组:

ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream out = null;
try {
  out = new ObjectOutputStream(bos);   
  out.writeObject(yourObject);
  out.flush();
  byte[] yourBytes = bos.toByteArray();
  ...
} finally {
  try {
    bos.close();
  } catch (IOException ex) {
    // ignore close exception
  }
}

从字节数组创建对象:

ByteArrayInputStream bis = new ByteArrayInputStream(yourBytes);
ObjectInput in = null;
try {
  in = new ObjectInputStream(bis);
  Object o = in.readObject(); 
  ...
} finally {
  try {
    if (in != null) {
      in.close();
    }
  } catch (IOException ex) {
    // ignore close exception
  }
}

Java相关问答推荐

当耗时的代码完成时,Circular ProgressIndicator显示得太晚

日食IDE 2024-03在Ubuntu下崩溃,导致hr_err_pid.log

具有默认分支的JUnit代码覆盖率切换声明

如何在Android上获取来电信息

使用包私有构造函数强制子类Java类

如何找到MongoDB文档并进行本地化?

蒙蒂霍尔比赛结果不正确

当返回Mono<;Something>;时,不会调用Mono<;void>;.flatMap

PDFBox未加载内容

如何在Microronaut中将 map 读取为 map

如何在构建Gradle项目时排除com.google.guava依赖项的一个变体

在Frege中,我如何将一个字符串安全地转换为一个可能的Int?

SpringBoot:在条件{Variable}.isBlank/{Variable}.isEmpty不起作用的情况下进行路径变量验证

没有使用Lombok生成的参数

Instancio未在日志(log)中显示测试失败消息

向Java进程发送`kill-11`会引发NullPointerException吗?

协同 routine 似乎并不比JVM线程占用更少的资源

如何设置默认序列生成器分配大小

如何在更改分辨率时将鼠标坐标计算为世界坐标

如何转换Vector<;对象>;转换为int?