JAVA NIO 怎么把某个用户的channel存起来,方便下次要用的时候找到?

阴塞的SOCKET里面,客户端发送{"id",1},服务端收到了,serversokcet.accept()得到一个socket,然后可以把他放到一个MAP里面,map.... 阴塞的SOCKET里面,客户端发送{"id",1},服务端收到了,serversokcet.accept()得到一个socket,然后可以把他放到一个MAP里面,map.put(1,serversocket.accept);

非阻塞怎么做?求解!
展开
 我来答
jamxval
推荐于2016-10-30 · TA获得超过6822个赞
知道大有可为答主
回答量:4308
采纳率:82%
帮助的人:1423万
展开全部

那个 Selector 在我们处理事件时能让我们最多保存一个”附件“,虽然是一个位置,但我们可以放上Map , Set ,对吧,你想放什么都不是问题,另外既然你用了 NIO 就不需要这样记住这个 channel 了,因为它已经在有其它方法直接找出这应的 channel 了,你多观察一下这些变量对应的类(在 Eclipse 中的 outline 大纲视图中可以看到所有方法名),就是说本身  API 在你连接成功后有办法让你知道当前是跟哪个客户端在通话,至少你用了像登录名这种逻辑意义上的标记的话,用那个”附件“就是不错误的方法,这个”附件“会在你期望的事件发生时被返回来还给你。

selector = Selector.open();

SelectionKey key = channel.register(selector, getInterestOptions());
key.attach("myLoginName");

String loginName = key.attachment();
追问
对对对,就是要找这个。妈的,买的书上都没有这个。。都在讲什么怎么建立连接什么的
追答
学会了看懂 API 文档把什么书都好用。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式