unknown
|
|
1 | |
Как использовать java.nio.channels.Selector на стороне клиента?20.02.2011, 20:52. Показов 4441. Ответов 6
Метки нет (Все метки)
Подскажите пожалуйста (вот уже 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 почему - не пойму ( подскажите или напишите примитивный пример, как с помощью селектора на клиенте передавать и получать данные. Заранее очень благодарен! |
20.02.2011, 20:52 | |
Ответы с готовыми решениями:
6
Как распарсить php массив на стороне клиента Как установить шрифт сайта на стороне клиента ? Как определить дату и время на стороне клиента Как проверить есть ли файл на стороне клиента? |
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 | |
24.02.2011, 18:26 | |
Помогаю со студенческими работами здесь
7
Как корректно закрыть соединение TCP на стороне клиента Как собрать многостраничный сайт только на стороне клиента? Как корректно считать вектор boost::asio::streambuf на стороне клиента Как на стороне клиента сделать так чтобы страница загружалась полностью Сделать обрезку фоторафий,еще не загруженых на сервер,на стороне клиента(как авватарки в вк) Nio идентификация клиента по каналу SocketChannel Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |