是否可以将每个传入的套接字连接保存在一个数组中,并在我们需要的时候使用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);
感谢。
答案 0 :(得分:3)
为了摆脱ArrayStoreException,我将创建一个Request-class,它保存信息,然后将Request存储在数组中。这样您就不需要进行大量不必要的转换,也不需要使用Object作为数组的类型。我还建议你看一下使用频道和选择器选择所需插座的java.nio
,我认为这是你想要做的。
答案 1 :(得分:1)
您是否已将请求[位置]初始化为新对象[2]?