关于得到的SelectionKey有3个方法
isAcceptable 表示有个客户端的请求
isWritable 是不是表示channel中没有数据服务器可以写数据
isReadable 是不是表示channel中有客户端写进去的数据服务器可以读假如我要实现一个多个客户聊天的程序 ,比如一个客户发消息给多个客户 ,服务器端是用几个集合保存这些selectionkey还是
保存通过selectionkey.channel()返回的channel
isAcceptable 表示有个客户端的请求
isWritable 是不是表示channel中没有数据服务器可以写数据
isReadable 是不是表示channel中有客户端写进去的数据服务器可以读假如我要实现一个多个客户聊天的程序 ,比如一个客户发消息给多个客户 ,服务器端是用几个集合保存这些selectionkey还是
保存通过selectionkey.channel()返回的channel
解决方案 »
- 我觉得B跟D是一个效果啊。。。
- 执行jar程序时界面显示与在其它电脑上显示的不一样?netbeans6.0生成的jar程序如何添加风格包?
- 制作自带jvm的java安装程序
- 请问 这个类中实例化的对象a 和b能够 转换吗?如果能请给出方法谢谢!
- (100分求)请问谁有MathFP类,现在网上下载不到了?
- 如何使用jTable来显示数据库内表~ 高手请进
- 请问如何将String类型转化成Integer类型
- tomcat必须要安装吗?我下载的tomcat怎么没有安装文件?
- 如何配置java的运行环境
- java Oracle jjdbc 在eclipse中编写,无法成功连接Oracle
- JPane 的paint repaint(为什么别人说的都不行)
- 求助大家:如何使用POI来打开或操作多个Excel表格?
NIO貌似以注册的方式来提供通道.
做之前还是看看api先,要不就像我样,做完了还是一知半解...
对服务器端的ServerSocket注册 SelectionKey.OP_ACCEPT 关注是否有客户端的连接,
然后循环调用selector.selectedKeys() 对返回的key 判断
1 如果是accpet 表示有新的连接 获得相应的channel 再注册 SelectionKey.OP_READ | SelectionKey.OP_WRITE (关注可读 可写)
2 如果write 就可以写数据
3 如果是read 就读数据现在有几个问题
如果某次获得的一个key,调用key.interestOps(SelectionKey.OP_WRITE|SelectionKey.OP_READ),就是表示下次关注可读可写,下次再选择的时候,如果这个key对应的管道中有客户端写进的数据还没读出,这时候获得的key 的key.isReadable()返回ture ,那么这个key 的key.isWritable()是不是为false,就是说key对应的channel 要么可读要么可写,是吗? 还有我一直这样理解的,一个key对应一个channel,我们把key放在selector集合中,每次选择时只是获得的相应的引用,我们可以对key的引用使用interestOps关注管道相应的可读写事件,这样对吗?
假如我上次对某个管道写了数据,但是客户端没读走相应的数据,下次还是可写的吗?