2011-10-09 71 views
0

是否有可能將每個傳入的套接字連接保存在一個數組中,並在Java中需要時使用它們?將套接字連接保存在數組中並使用它們 - Java

我嘗試了以下陣列結構,但它拋出Exception in thread "ServerHandler-0" java.lang.ArrayStoreException: java.net.Socket

我的數組是這樣的:

Object[][] requests; 

和我對象插入到這個如下:

requests[position][0] = o; //o is a Serializableobject 
requests[position][1] = s; // this is the socket instance 

我的意圖使用從陣列拉出的插座:

Socket s = (Socket) requests[position][1]; 
OutputStream os = s.getOutputStream(); 
ObjectOutputStream oos = new ObjectOutputStream(os); 
oos.writeObject(o); 

謝謝。

回答

3

爲了擺脫ArrayStoreException,我將創建一個Request-class,它保存信息,然後將請求存儲在數組中。這樣你就不需要做很多不必要的轉換,也不需要使用Object作爲數組的類型。我還可以推薦你看看java.nio,你可以使用頻道和選擇器來選擇所需的套接字,我認爲這是你正在嘗試做的。

+0

你的意思是什麼樣的數組?鑄造不是一個問題,因爲這是一個學術項目,我不知何故需要插入套接字實例到一個數組。 – coder9

+0

我的意思是你的請求數組是request [] requests而不是Object [] []請求],Request對象包含套接字實例以及該實例的其他特定數據。 – Marcus

+0

如果它是一維數組(Request []請求)如何存儲Socket和Serializable對象?你如何繪製這兩個圖? – coder9

1

您是否已經將請求[位置]初始化爲新對象[2]?

+0

我在陣列中保留一個可接受的套接字,並且不要重新初始化。 – coder9

+0

@ coder9這並不回答我的問題。 – EJP