【问题标题】:Sending two different type of arrays over TCP通过 TCP 发送两种不同类型的数组
【发布时间】:2013-10-01 22:15:36
【问题描述】:

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

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

现在这可以工作了

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

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

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

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

【问题讨论】:

标签: java arrays sockets tcp


【解决方案1】:

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

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;
}

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

【讨论】:

    猜你喜欢
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    • 2021-07-03
    • 2019-11-05
    • 1970-01-01
    • 2017-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多