在数组中保持套接字连接并使用它们 - Java

时间:2011-10-09 17:23:16

标签: java sockets serialization

是否可以将每个传入的套接字连接保存在一个数组中,并在我们需要的时候使用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);

感谢。

2 个答案:

答案 0 :(得分:3)

为了摆脱ArrayStoreException,我将创建一个Request-class,它保存信息,然后将Request存储在数组中。这样您就不需要进行大量不必要的转换,也不需要使用Object作为数组的类型。我还建议你看一下使用频道和选择器选择所需插座的java.nio,我认为这是你想要做的。

答案 1 :(得分:1)

您是否已将请求[位置]初始化为新对象[2]?