Хранение сокетных соединений в массиве и их использование - Java - PullRequest
0 голосов
/ 09 октября 2011

Можно ли сохранить каждое входящее соединение сокетов в массиве и использовать каждое, когда нам нужно в Java?

Я попробовал следующую структуру Array, но она выдает 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 ]

3 голосов
/ 09 октября 2011

Чтобы избавиться от ArrayStoreException, я бы создал Request-класс, который содержит информацию, а затем сохранил Request в массиве. Таким образом, вам не нужно делать много ненужного приведения и не нужно использовать Object в качестве типа массива. Я также могу порекомендовать вам взглянуть на java.nio, где вы используете каналы и селекторы для выбора желаемых сокетов, и я думаю, это то, что вы пытаетесь сделать.

1 голос
/ 10 октября 2011

Вы инициализировали запросы [позиции] к новому объекту [2]?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...