请问下面代码中的printKeyInfo和debug是什么意思,怎么使用?
我是个初学者,在网上看到一段代码,但这两个地方不懂,请各位指教import java.io.*;
import java.nio.*;
import java.nio.channels.*;
import java.nio.channels.spi.*;
import java.net.*;
import java.util.*;
/**
*
* @author Administrator
* @version
*/public class NBTest {
/** Creates new NBTest */
public NBTest()
{
} public void startServer() throws Exception
{
int channels = 0;
int nKeys = 0;
int currentSelector = 0; //使用Selector
Selector selector = Selector.open(); //建立Channel 并绑定到9000端口
ServerSocketChannel ssc = ServerSocketChannel.open();
InetSocketAddress address = new InetSocketAddress(InetAddress.getLocalHost(),9000);
ssc.socket().bind(address); //使设定non-blocking的方式。
ssc.configureBlocking(false); //向Selector注册Channel及我们有兴趣的事件
SelectionKey s = ssc.register(selector, SelectionKey.OP_ACCEPT);
printKeyInfo(s); while(true) //不断的轮询
{
debug("NBTest: Starting select"); //Selector通过select方法通知我们我们感兴趣的事件发生了。
nKeys = selector.select();
//如果有我们注册的事情发生了,它的传回值就会大于0
if(nKeys > 0)
{
debug("NBTest: Number of keys after select operation: " +nKeys); //Selector传回一组SelectionKeys
//我们从这些key中的channel()方法中取得我们刚刚注册的channel。
Set selectedKeys = selector.selectedKeys();
Iterator i = selectedKeys.iterator();
while(i.hasNext())
{
s = (SelectionKey) i.next();
printKeyInfo(s);
debug("NBTest: Nr Keys in selector: " +selector.keys().size()); //一个key被处理完成后,就都被从就绪关键字(ready keys)列表中除去
i.remove();
if(s.isAcceptable())
{
// 从channel()中取得我们刚刚注册的channel。
Socket socket = ((ServerSocketChannel)s.channel()).accept().socket();
SocketChannel sc = socket.getChannel(); sc.configureBlocking(false);
sc.register(selector, SelectionKey.OP_READ |SelectionKey.OP_WRITE);
System.out.println(++channels);
}
else
{
debug("NBTest: Channel not acceptable");
}
}
}
else
{
debug("NBTest: Select finished without any keys.");
} }}
我是个初学者,在网上看到一段代码,但这两个地方不懂,请各位指教import java.io.*;
import java.nio.*;
import java.nio.channels.*;
import java.nio.channels.spi.*;
import java.net.*;
import java.util.*;
/**
*
* @author Administrator
* @version
*/public class NBTest {
/** Creates new NBTest */
public NBTest()
{
} public void startServer() throws Exception
{
int channels = 0;
int nKeys = 0;
int currentSelector = 0; //使用Selector
Selector selector = Selector.open(); //建立Channel 并绑定到9000端口
ServerSocketChannel ssc = ServerSocketChannel.open();
InetSocketAddress address = new InetSocketAddress(InetAddress.getLocalHost(),9000);
ssc.socket().bind(address); //使设定non-blocking的方式。
ssc.configureBlocking(false); //向Selector注册Channel及我们有兴趣的事件
SelectionKey s = ssc.register(selector, SelectionKey.OP_ACCEPT);
printKeyInfo(s); while(true) //不断的轮询
{
debug("NBTest: Starting select"); //Selector通过select方法通知我们我们感兴趣的事件发生了。
nKeys = selector.select();
//如果有我们注册的事情发生了,它的传回值就会大于0
if(nKeys > 0)
{
debug("NBTest: Number of keys after select operation: " +nKeys); //Selector传回一组SelectionKeys
//我们从这些key中的channel()方法中取得我们刚刚注册的channel。
Set selectedKeys = selector.selectedKeys();
Iterator i = selectedKeys.iterator();
while(i.hasNext())
{
s = (SelectionKey) i.next();
printKeyInfo(s);
debug("NBTest: Nr Keys in selector: " +selector.keys().size()); //一个key被处理完成后,就都被从就绪关键字(ready keys)列表中除去
i.remove();
if(s.isAcceptable())
{
// 从channel()中取得我们刚刚注册的channel。
Socket socket = ((ServerSocketChannel)s.channel()).accept().socket();
SocketChannel sc = socket.getChannel(); sc.configureBlocking(false);
sc.register(selector, SelectionKey.OP_READ |SelectionKey.OP_WRITE);
System.out.println(++channels);
}
else
{
debug("NBTest: Channel not acceptable");
}
}
}
else
{
debug("NBTest: Select finished without any keys.");
} }}
解决方案 »
- 关于struts.properties应用
- java io中的flush
- spring和xfire的结合问题
- Java中的正则表达式--如何写一个能够判断是否为数字的表达式
- HashMap存取问题,急!
- hibernate4操作sqlserver的详细例子,带CRUD,哪位大神出手
- 如何将我用<input type=file>组件选择的文件上传到我在程序中指定的FTP服务器?
- Tomcat 1.5 怎么没有管理页面(admin)??
- 我想用Java 做毕业设计,做什么好啊
- XML文件解析失败:属性前要求有空白。
- 多文件上传时,如何模拟数据库中的事务处理?
- JSP如何实现随机验证码------要详细的说明和源码!
debug无非就是打印日志或者输出控制台信息的一个封装
printKeyInfo(s);应该也是对实例对象信息的打印
楼主应该没有完整的代码,有的话就不会出现这样的问题了。