在SNMP4J中使用代理名称而不是IP作为地址

时间:2016-03-07 17:56:15

标签: network-programming snmp snmp4j

我正在尝试制作一个程序,将SNMP查询发送到网络中的某些交换机。

使用Net-snmp工具,我可以使用其名称向交换机发送get请求,并且它可以正常工作。但SNMP4J需要CommunityTarget中的IP地址,因此我得到IllegalArgumentException

这是代码的相关部分:

TransportMapping transport = new DefaultUdpTransportMapping();
transport.listen();

CommunityTarget comtarget = new CommunityTarget();
comtarget.setCommunity(new OctetString("public"));
comtarget.setVersion(SnmpConstants.version1);
comtarget.setAddress(new UdpAddress("switchName")); // exception happens here
comtarget.setRetries(2);
comtarget.setTimeout(1000);

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您可以使用DNS解析获取IP地址,如answer所示:

InetAddress address = InetAddress.getByName(switchName); 
System.out.println(address.getHostAddress());