首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SNMP4J发送永不超时

SNMP4J发送永不超时
EN

Stack Overflow用户
提问于 2015-08-07 06:08:45
回答 1查看 994关注 0票数 0

我在使用SNMP4J库时遇到了一个问题。当我向其发送请求的SNMP服务器正在运行时,我的代码运行得很好,但是当它没有运行时,我希望SNMP请求最终超时。但是,它永远不会超时。例如,下面的代码,即使dcadb2不存在(即不能ping这个主机名),程序也不会打印"Timed out“。它将尝试无限地到达该设备。

代码语言:javascript
运行
复制
private ResponseEvent getSnmpResponse() {
    PDU pdu = createPdu();
    Target target = getTarget();
    try {
        ResponseEvent event = snmp.send(pdu, target, null);
        return event;
    }
    catch (IOException e ){
        System.out.println("Timed out");  
    }
}

protected PDU createPdu() {
    PDU pdu = new PDU();
    pdu.add(new VariableBinding(new OID(DISK_TOTAL_OID)));
    pdu.add(new VariableBinding(new OID(DISK_AVAIL_OID)));
    pdu.add(new VariableBinding(new OID(DISK_USED_OID)));
    pdu.add(new VariableBinding(new OID(DISK_PERCENT_USED_OID)));
    pdu.setType( PDU.GET );
    return pdu;
}

private Target getTarget() {
    CommunityTarget target = new CommunityTarget();
    target.setCommunity( new OctetString("public") );
    target.setAddress( GenericAddress.parse("dcadb2/161") );
    target.setRetries( 1 );
    target.setTimeout( 1000L );
    target.setVersion( SnmpConstants.version2c );
    return target;
}
EN

回答 1

Stack Overflow用户

发布于 2015-08-08 04:02:21

我找到了解决方案。如果你给它一个不存在的IP,SNMP4J (或者至少是我使用的版本1.11.2)会超时,但如果你给它一个不存在的主机名,就不会超时。在后一种情况下,线程将继续无限。因此,解决方案是使用IP地址。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31866630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档