我在尝试通过 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]);
如何检索作为对象发送的二维数组?
最佳答案
您需要在两端构造 ObjectInputStream 之前构造 ObjectOutputStream。否则,对等点可能会在读取对象流 header 时出现死锁。
您需要在套接字的生命周期内构造一次流,而不是每次发送或接收一次。
关于java - 反序列化通过 ObjectOutpoutStream 发送的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20402114/