2012-10-12 80 views
2

最近我正在使用多線程概念製作服務器 - 客戶端程序。出於某種原因,我必須從客戶端發送一串字符串到服務器。我正在使用ObjectOutputStreamwriteObject()方法發送該字符串數組。例如,我有一個名爲String data[] = new String[3]的數組,然後通過socketwriteobject(data)發送它。通過套接字接收和打印字符串數組對象

問題是,我如何接收服務器上的這個字符串數組?是ObjectInputStream和這種方法readObject()可以幫助我嗎?我只是想迭代這個對象,並把它變成服務器端的新字符串數組。例如String newData[] = new String[3],然後將data[0]中的字符串轉換爲newData[0],直到data[2]轉換爲newData[2]

回答

3

我相信當你使用readObject()來讀你的對象時,它應該返回你自己的String []。

  String[] myObjects = (String[])inObjectStream.readObject(); 

這不工作?

+0

是的,它的工作!謝謝。但是我有一個問題,爲什麼我們必須在這段代碼中放一個'try-catch'? – irvana

+0

由於'ObjectInputStream.readObject()'拋出了一些例外可能的失敗,例如'ClassNotFoundException' - 找不到序列化對象的類。 'InvalidClassException' - 序列化使用的類有問題。 'StreamCorruptedException' - 流中的控制信息不一致。 'OptionalDataException' - 在流中找到原始數據而不是對象。 'IOException' - 任何常見的輸入/輸出相關異常。 –

+0

如果出現上述任何情況,即無法讀取文件,則會拋出'IOException',您需要在catch塊中處理該異常。 '如果您不想添加try/cath,則在方法簽名末尾添加上面提到的異常作爲'throws IOException,OptionalDataException,InvalidClassException,ClassNotFoundException,StreamCorruptedException'。請讓我知道,如果你需要任何幫助。 –