通过TCP发送两种不同类型的数组

时间:2013-10-01 14:05:18

标签: java arrays sockets tcp

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

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

现在这可行了

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

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

但是我只能使用这个,如果我只发送2d int数组,因为我需要在另一端打字,并且如前所述,我希望能够发送不同类型的2d和常规数组。 / p>

还有其他可以用于此的ObjectOutputStream吗?

1 个答案:

答案 0 :(得分: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;
}

如果您使用其他东西进行通信,您仍然需要以某种方式指出您要发送的阵列类型,因此您将始终遇到同样的问题。