0

私は現在、1 つの 2D 配列の int と 1 つの通常のオブジェクト配列を TCP 接続経由で送信できるネットワーク アプリケーションを作成しています。

これまでの最初で唯一の解決策は、ByteArrayOutputStream と ObjectOutputStream を使用することですが、これは、反対側で型キャストした特定の型の配列を送信した場合にのみ機能します。

今、これはうまくいくでしょう

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

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

しかし、これを使用できるのは、2D int 配列のみを送信する場合のみです。これは、相手側でこれを typcast する必要があるためです。前述のように、異なるタイプの 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 に答える