2013-10-01 46 views
0

我目前正在編寫一個網絡應用程序,它必須能夠通過TCP連接發送一個二維整型數組和一個常規對象數組。通過TCP發送兩種不同類型的數組

我的第一個也是唯一的解決方案是使用ByteArrayOutputStream和ObjectOutputStream,但只有當我發送特定類型的數組時,我才能在另一端重新綁定。

現在這樣的工作

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

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

但我只能用這個,如果我只是因爲我需要typcast這在另一端,如前面所說,我希望能夠發送2D INT-陣列發送不同類型的2d和常規數組。

是否有其他的東西可以使用ObjectOutputStream呢?

+2

您可以使用其他格式,如XML,JSON或Protocol Buffers(https://code.google.com/p/protobuf/) – elevine

回答

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

如果你使用別的溝通,你仍然必須註明陣列的要發送以某種方式的類型,所以你總是有同樣的問題。