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

2025-05-21 04:21:04
推荐回答(1个)
回答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();