Netty 绑定到错误的接口



我在Win7 PC上设置了一个环回适配器,以便我可以与Netty绑定到它。问题是我为环回地址分配了一个 IP 地址 172.16.1.1 /24(这是必需的)。但是当我尝试通过 Netty 绑定时,它会绑定到127.0.0.1地址 - 称为默认本地主机 IP。所以我只是想知道我该如何解决这个问题?我特别需要它来绑定到 IP 地址172.16.1.1和端口162的环回适配器。

相关图片: https://i.stack.imgur.com/Tn6qm.png

NetUtil  - Loopback interface: Software Loopback Interface 1
NetUtil  - Loopback address: /127.0.0.1 (primary) <--- the problem
NetUtil  - Loopback address: /0:0:0:0:0:0:0:1

代码相关:

public class SnmpServer {
private final Logger logger = Logger.getLogger("SnmpServer");
//private final static String SNMP_HOST_IP = "172.16.1.1";
private static final byte[] SNMP_HOST_ADDR = {(byte)172, (byte)16, (byte)1, (byte)1};
private final static int SNMP_TRAP_PORT = 162;
final ServerBootstrap snmpBootstrap;
public SnmpServer() {
    snmpBootstrap = new ServerBootstrap();
}
public void bind() throws Exception {
    final EventLoopGroup bossGroup = new NioEventLoopGroup();
    final EventLoopGroup workerGroup = new NioEventLoopGroup();
    final SocketAddress socket =
            new InetSocketAddress(InetAddress.getByAddress(SNMP_HOST_ADDR), SNMP_TRAP_PORT);
    try {
        snmpBootstrap.group(bossGroup, workerGroup)
                .channel(NioServerSocketChannel.class)
                .childHandler(new SnmpChannelHandler());
        final ChannelFuture future = snmpBootstrap.bind(socket).sync();
        //future.channel().closeFuture().sync();
    } finally {
        bossGroup.shutdownGracefully();
        workerGroup.shutdownGracefully();
    }
}
}

修复是Netty绑定到位于我的HOSTS文件中的所有地址。我只是导航到该文件并在那里添加了172.16.1.1 localhost的地址,然后调用InetAddress.getByName("localhost")

NetUtil 输出与它绑定的任何内容无关。它将绑定到您传递给 bind(...) 方法的 InetSocketAddress。

相关内容

最新更新