Форум программистов, компьютерный форум, киберфорум
Java: Сети
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/23: Рейтинг темы: голосов - 23, средняя оценка - 4.61
unknown
1

Как использовать java.nio.channels.Selector на стороне клиента?

20.02.2011, 20:52. Показов 4441. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите пожалуйста (вот уже 3 день бъюсь и не могу решить проблему):
напишите кто знает как использовать java.nio.channels.Selector на стороне клиента? Во всех примерах, которые мне попадались java.nio.channels.Selector используется на стороне сервера. Когда я пытался применить такой подход у клиента (разумеется вместо класса ServerSocketChannel) я на клиенте использовал следующее:

Selector selector = Selector.open();
SocketChannel socketChannel = SocketChannel.open(new InetSocketAddress('127.0.0.1', 9990));
socketChannel.configureBlocking(false);
socketChannel.register(selector, OP_CONNECT);
.....
далее в коде, где происходила выборка из селектора всех событий, связанных с инициацией соединения, я пытался проверить наличие соединения
System.out.println(socketChannel.isConnected());
всегда мне показывал, что socketChannel.isConnected() == false

почему - не пойму (
подскажите или напишите примитивный пример, как с помощью селектора на клиенте передавать и получать данные.
Заранее очень благодарен!
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.02.2011, 20:52
Ответы с готовыми решениями:

Как распарсить php массив на стороне клиента
Всем привет. Ребят, помогите, пожалуйста. $stmt = $pdo->query("SELECT title FROM...

Как установить шрифт сайта на стороне клиента ?
Например я создаю сайт с текстом шрифтом "Шрифт7". Знаю как можно установить, чтобы при запуске на...

Как определить дату и время на стороне клиента
Коллеги, добрый день! Необходимо сформировать идентификатор состоящий из даты (ГГГГММДД) и...

Как проверить есть ли файл на стороне клиента?
Вообщем есть такой плагин для просмотра 3д моделей cult3d, по нему не так много инфы, но нужно...

6
unknown
21.02.2011, 20:03 2
ответьте хотябы пожалуйста на такой вопрос: класс Selector может использоваться только для ServerSocketChannel? Или его можно применять для классов SocketChannel тоже? А если можно, то как? Примерчик небольшой скиньте. Потому что я пробую все как по-правилам зарегистрировать канал SocketChannel в экземпляре класса Selector, но это не работает.
mishgun
21.02.2011, 20:17 3
Poprobuyte tak

ServerSocketChannel server = ServerSocketChannel.open();
server.configureBlocking(false);
server.socket().bind(new java.net.InetSocketAddress(9999));
SelectionKey serverkey = server.register(selector,SelectionKey.OP_ACCEPT);
unknown
21.02.2011, 21:01 4
уважаемый mishgun, но у меня канал сокета должен использоваться у клиента для передачи данных серверу, поэтому я не испо-ю ServerSocketChannel, а использую просто SocketChannel, который соединяется с сервером. я хочу использовать селектор у клиента, но это не получается.
mishgun
21.02.2011, 22:47 5
Soglasno doke SocketChannel dolzhen byt ne tolko open() no i connect()
I voobsche Vam neobhodim tak zhe i Socket

Vot chto govorit doka:

Socket channels are not a complete abstraction of connecting network sockets. Binding, shutdown, and the manipulation of socket options must be done through an associated Socket object obtained by invoking the socket method. It is not possible to create a channel for an arbitrary, pre-existing socket, nor is it possible to specify the SocketImpl object to be used by a socket associated with a socket channel.

A socket channel is created by invoking one of the open methods of this class. A newly-created socket channel is open but not yet connected. An attempt to invoke an I/O operation upon an unconnected channel will cause a NotYetConnectedException to be thrown. A socket channel can be connected by invoking its connect method; once connected, a socket channel remains connected until it is closed. Whether or not a socket channel is connected may be determined by invoking its isConnected method.
1 / 1 / 0
Регистрация: 15.02.2010
Сообщений: 311
24.02.2011, 18:23 6
Почитайте Thinking in Enterprise Java by Bruce Eckel et. Al.
(http://www.javareference.com/books/freebooks/TIE/TIEJv1.1.htm)

Крайне рекомендую вообще, а в частности раздел Selector Based Multiplexing in JDK1.4.
дальше уже сами найдете, где смотреть...
0
1 / 1 / 0
Регистрация: 15.02.2010
Сообщений: 311
24.02.2011, 18:26 7
Или здесь: http://www.uic.rsu.ru/doc/programming/eckel/
0
24.02.2011, 18:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.02.2011, 18:26
Помогаю со студенческими работами здесь

Как корректно закрыть соединение TCP на стороне клиента
Код следующий: TcpClient client = new TcpClient(server, port); Byte data ; ...

Как собрать многостраничный сайт только на стороне клиента?
Всем привет, есть многостраничный сайт с меню, шапкой, содержимым. Только html и css. Т.е....

Как корректно считать вектор boost::asio::streambuf на стороне клиента
Доброго времени суток! Назрел вопрос: Пишу в сокет с помощью boost::asio::buffer...

Как на стороне клиента сделать так чтобы страница загружалась полностью
Нужно сделать так чтобы страница загружалась полностью. Без ленивой подгрузки. Например в вк есть...

Сделать обрезку фоторафий,еще не загруженых на сервер,на стороне клиента(как авватарки в вк)
Здравствуйте,как сделать загрузку изображений используя Php+jquery.Но при этом фото еще не...

Nio идентификация клиента по каналу SocketChannel
Здравствуйте. Голову сломал окончательно, но так и не удалось выяснить как по каналу сервер может...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru