Netty TCP 服务器 - 在创建通道之前拒绝 IP
Netty TCP Server - Reject IPs before channel is created
所以 - 我用 Netty 4 创建了一个 TCP 服务器。设置很简单,我使用 Netty 的编解码器来处理序列化。
我正在尝试根据 IP 地址进行过滤,它可以工作,但已创建通道并创建处理程序。如果它是过滤 IP,我不希望创建处理程序。
我在服务器中添加过滤器,这里 -
channelPipeline.addFirst(filter)
但是我的 ServerHandler 总是先被调用
channelPipeline.addLast(serverHandler)
日志:
Handler added - /127.0.0.1:58781 -- ServerHandler
2019-10-06 12:04:11.673 INFO - FILTER! - /127.0.0.1 -- Filter
我试图寻找例子,但我发现很难。我也尝试过将它添加到同一个 .addLast () 过滤器中,但没有任何乐趣。
TIA!
更新
感谢 Norman 的回答,也许我找错了地方。我们在 AWS 上的 ELB 有一个健康检查器,它每秒访问服务器 4 次,当真正的客户端连接时,它不会收到返回的消息。如果我禁用健康检查器 - 它会完美运行。
有什么办法解决这个问题?
您将需要使用 iptables
之类的东西在内核级别进行过滤。
所以 - 我用 Netty 4 创建了一个 TCP 服务器。设置很简单,我使用 Netty 的编解码器来处理序列化。
我正在尝试根据 IP 地址进行过滤,它可以工作,但已创建通道并创建处理程序。如果它是过滤 IP,我不希望创建处理程序。
我在服务器中添加过滤器,这里 -
channelPipeline.addFirst(filter)
但是我的 ServerHandler 总是先被调用
channelPipeline.addLast(serverHandler)
日志:
Handler added - /127.0.0.1:58781 -- ServerHandler
2019-10-06 12:04:11.673 INFO - FILTER! - /127.0.0.1 -- Filter
我试图寻找例子,但我发现很难。我也尝试过将它添加到同一个 .addLast () 过滤器中,但没有任何乐趣。
TIA!
更新
感谢 Norman 的回答,也许我找错了地方。我们在 AWS 上的 ELB 有一个健康检查器,它每秒访问服务器 4 次,当真正的客户端连接时,它不会收到返回的消息。如果我禁用健康检查器 - 它会完美运行。
有什么办法解决这个问题?
您将需要使用 iptables
之类的东西在内核级别进行过滤。