java - 反序列化通过 ObjectOutpoutStream 发送的对象

标签 java sockets tcp

我在尝试通过 ObjectOutputStream 接收二维/String 数组时遇到问题。 我发送数组的代码是:

String [][] sendable = new String [n][5];
ObjectOutputStream os = new ObjectOutputStream(socket.getOutputStream());
os.writeObject(sendable);

假设我的数组已用所有值初始化,我如何将接收到的数据解压缩回二维数组?我的第一个方法是这个,但它一直导致问题,因为我对 Java 和套接字编程还比较陌生。

ObjectInputStream ois =new ObjectInputStream(clientSocket.getInputStream());
String insa[][] = null;         

try{
    insa= (String[][]) ois.readObject();
} catch (ClassNotFoundException ex){
    ex.printStackTrace();
}

System.out.println(insa[0][1]);  

如何检索作为对象发送的二维数组?

最佳答案

  1. 您需要在两端构造 ObjectInputStream 之前构造 ObjectOutputStream。否则,对等点可能会在读取对象流 header 时出现死锁。

  2. 您需要在套接字的生命周期内构造一次流,而不是每次发送或接收一次。

关于java - 反序列化通过 ObjectOutpoutStream 发送的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20402114/

相关文章:

java - 使用 GWT 监控数据库

c++ - 在 C++ 中使用 readv()、writev() 和 poll()

actionscript-3 - 在 Flash 中发送 XML 和接收响应的最佳类设计

c# - http工作时如何测试WCF net.tcp?

embedded - 谁在搞乱这个 TCP 连接?

java - 定时quartz任务执行时长

java - 使用正则表达式将句子拆分为单词,其中单词还包含多个空格

java - Android:如何在 TextView 中为文本提供项目符号、换行符

c - connect() 不返回

c - 如何在 Linux 的 udp 中使用 select api