JAVA NIO 怎么把某个用户的channel存起来,方便下次要用的时候找到?
阴塞的SOCKET里面,客户端发送{"id",1},服务端收到了,serversokcet.accept()得到一个socket,然后可以把他放到一个MAP里面,map....
阴塞的SOCKET里面,客户端发送{"id",1},服务端收到了,serversokcet.accept()得到一个socket,然后可以把他放到一个MAP里面,map.put(1,serversocket.accept);
非阻塞怎么做?求解! 展开
非阻塞怎么做?求解! 展开
1个回答
展开全部
那个 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 文档把什么书都好用。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询