0

我目前正在编写一个网络应用程序,它必须能够通过 TCP 连接发送一个二维整数数组和一个常规对象数组。

到目前为止,我的第一个也是唯一的解决方案是使用 ByteArrayOutputStream 和 ObjectOutputStream ,但这只有在我发送特定类型的数组并在另一边类型转换回时才有效。

现在这可行

baos = new ByteArrayOutputStream();
oos = new ObjectOutputStream(baos);

oos.writeObject(2dArray);
Byte[] send = baos.toByteArray();

但是我只能在我只发送 2d int-arrays 时使用它,因为我需要在另一端键入它,并且如前所述,我希望能够发送 2d 和不同类型的常规数组。

除了 ObjectOutputStream 之外,还有其他东西可以用于此目的吗?

4

1 回答 1

2

当您在远程端收到一个对象时,您可以检查它是哪种对象。例如你可以写:

Object received = in.readObject();
if (received instanceof int[]) {
    // received 1d array
    int[] array1D = (int[]) received;
} else if (received instanceof int[][]) {
    // received 2d array
    int[][] array2D = (int[][]) received;
}

如果您使用其他东西进行通信,您仍然必须以某种方式指示您发送的数组类型,因此您总是会遇到同样的问题。

于 2013-10-01T14:15:36.220 回答