保持所有连接客户端的IP in netty

时间:2013-11-27 09:57:53

标签: sockets netty

我的TCP服务器使用netty。情况是:当客户端连接到服务器时,我将客户端的ip保存在全局变量(例如Map)中;当客户端断开连接时,我将从地图中删除IP。

我在SimpleChannelHandler中使用了channelConnected()和channelDisconnected()方法。但我的问题是,当我认为客户端断开连接时(某些时候计算机关闭或客户端进程关闭),有时channelDisconnected()方法无法捕获事件或者其他一些情况......)你能给我一些建议。

1 个答案:

答案 0 :(得分:0)

只需使用DefaultChannelGroup,它会在关闭时自动从中删除频道。

另外,您可以将ChannelFutureListener注册到Channels close future以从地图中删除。 像这样:

channel.getCloseFuture().addListener(new ChannelFutureListener() {
    public void operationCompleted(ChannelFuture f) {
        map.remove(f.getChannel());
    }
});