如何获得Netty频道的ID?

And*_*ois 7 netty

Channel.id()已在Netty 4.0.0.CR9中删除.

这些天我如何获得频道的ID?

我曾经在我的所有处理程序中使用id()进行日志记录(例如System.out.println(ctx.channel().id()+" - readableBytes():"+ in.readableBytes())).

我不能依赖Channel的toString方法,因为它可能被覆盖.

tru*_*tin 10

如果您确信该通道被激活,可以通过组合产生的信道的唯一的ID hashCode(),remoteAddress()localAddress().或者,您可以简单地使用Channel.toString()从三个属性生成字符串.如果频道尚未激活,remoteAddress()并且 localAddress()不会提供有意义的信息,那么您仍有可能发生冲突.

重新引入了Netty 4.1和5.0 Channel.id(),它返回一个名为的新类型ChannelId.它使用各种信息,如MAC地址,当前PID,时间戳和哈希码,因此它甚至可以用作全局唯一ID.检查Javadoc.