2013-12-12 70 views
0

我想为某些设备创建snmp客户端。但是,设备不能从本地主机直接访问。想要使用外部IP创建snmp客户端(会话)。我如何使用SNMP4j来填充它。如何在snmp4j中使用外部ip创建snmp客户端?

下面是我用来创建snmp客户端的代码片段。

public SNMPClient(String address) { 
    super(); 
    this.address = address; 
    try { 
     start(); 
    } catch (IOException e) { 
     throw new RuntimeException(e); 
    } 
} 

private void start() throws IOException { 

    TransportMapping transport = new DefaultUdpTransportMapping(); 

    // Create Target Address object 
    this.target = new CommunityTarget(); 
    target.setCommunity(new OctetString("public")); 
    target.setVersion(SnmpConstants.version2c); 
    target.setAddress(new UdpAddress(address)); 
    target.setRetries(2); 
    target.setTimeout(50000); 
    snmp = new Snmp(transport); 

    transport.listen(); 
} 

我试过运输创建过程中给extrenal IP像图所示

TransportMapping transport = new DefaultUdpTransportMapping(new UdpAddress("192.8.8.8")); 

但似乎并不奏效。

请问我该怎么办?

由于提前, Brinal

回答

3

你错过了在你的代码监听端口定义。这是它应该如何工作

TransportMapping transport = new DefaultUdpTransportMapping(new UdpAddress("192.8.8.8/161")); 
  • 161端口监听标准SNMP代理查询响应
  • 162侦听SNMP代理陷阱消息

但IAM不知道我完全理解你题。 SNMP客户端(管理器)用于查询在网络设备(如路由器,PC,打印机等)上运行的snmp代理并接收这些查询的响应。管理员还会监听由snmp代理发起的陷阱消息。您的目的是创建snmp经理或代理吗?

+0

谁会向代理提供MIB? ...位于Manager-Agent上下文中的MIB在哪里? –

+0

双方都有相同的mib表 – tomm