2014-02-08 4 views
0

Winty PC에 루프백 어댑터를 설정하여 Netty로 바인드 할 수 있도록했습니다. 것은 루프백 주소에 IP 주소가 172.16.1.1 /24 (필수) 인 것을 지정합니다. 그러나 Netty를 통해 바인드하려고하면 기본 로컬 호스트 IP라고하는 127.0.0.1 주소로 바인드됩니다. 그래서이 문제를 어떻게 해결할 수 있을지 궁금합니다. 특히 IP 주소가 172.16.1.1이고 포트가 162 인 루프백 어댑터에 바인드해야합니다.잘못된 인터페이스에 대한 Netty 바인딩

은 사진 관련 : http://i.imgur.com/LdGQZh3.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(); 
    } 
} 

} 
+0

127.0.0.1 *은 * 루프백 주소이고 172.16.1.1은 아닙니다. – EJP

답변

0

NetUtil 출력 할일이 결합 아무 상관이 없습니다. 바인드 (...) 메소드에 전달한 InetSocketAddress에 바인드됩니다.

1

수정 사항은 Netty가 내 HOSTS 파일에있는 모든 주소에 바인딩된다는 것이 었습니다. 간단히 그 파일을 탐색하여 거기에 172.16.1.1 localhost의 주소를 추가 한 다음 InetAddress.getByName("localhost")을 호출했습니다.

관련 문제