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

Using agent name instead of IP as Address in 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);

我该如何解决这个问题?

可以通过DNS解析获取IP地址,像这样answer表示:

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