|
|
Test select return value. Java code example - Click here to copy ->>>
Can't find what you're looking for? Try our search:
|
|
Really working examples categorized by API, package, class. You can compile and run our examples right away!
Not from source code for Java projects - only working examples! Copy, compile and run!
|
| Code: |
package com.ronsoft.books.nio.channels;
import java.nio.ByteBuffer;
import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel;
import java.nio.channels.Selector;
import java.nio.channels.SelectionKey;
import java.nio.channels.SelectableChannel;
import java.net.Socket;
import java.net.ServerSocket;
import java.net.InetSocketAddress;
import java.util.Iterator;
/**
* Test select return value.
* Start this server, then connect to port 1234. The incoming
* connection will be registered with the selector but never read.
* Type something on the conection, the selector will see the channel
* ready but the channel is never serviced in the loop. Select will
* return 1 forever after.
*
* @author Ron Hitchens (ron@ronsoft.com)
* @version $Id: SelectTest.java,v 1.1 2002/05/20 07:24:29 ron Exp $
*/
public class SelectTest
{
public static int PORT_NUMBER = 1234;
public static void main (String [] argv)
throws Exception
{
ServerSocketChannel ssc = ServerSocketChannel.open();
Selector selector = Selector.open();
ssc.socket().bind (new InetSocketAddress (PORT_NUMBER));
ssc.configureBlocking (false);
ssc.register (selector, SelectionKey.OP_ACCEPT);
while (true) {
int n = selector.select (1000);
System.out.println ("selector returns: " + n);
Iterator it = selector.selectedKeys().iterator();
while (it.hasNext()) {
SelectionKey key = (SelectionKey) it.next();
// Is a new connection coming in?
if (key.isAcceptable()) {
ServerSocketChannel server =
(ServerSocketChannel) key.channel();
SocketChannel channel = server.accept();
// set the new channel non-blocking
channel.configureBlocking (false);
// register it with the selector
channel.register (selector,
SelectionKey.OP_READ);
it.remove();
}
// is there data to read on this channel?
if (key.isReadable()) {
System.out.println ("Channel is readable");
// don't actually do anything
}
// it.remove();
}
}
}
}
|
|
|
References.
The list of classes which were used on this page you can find below. The
links to Java API contain official SUN documentation about all used classes.
[ Go Back ]
|
|