这里写自定义目录标题
使用snmp++获取交换机数据时,如果不存在或者其他原因 卡死,主要时修改 ctarget.set_timeout(100); //设置当前错误超时时间 原先是5000太长了 超时函数
/**
* Set the timeout for requests.
*
* The default timeout for requests is 1 second (100).
*
* @param t - Timeout in 10ms, so 100 will set the timeout to 1 second.
*/
void set_timeout(const unsigned long t) { timeout = t; };
void MyStringArray::GetOne(QString &ip, QString &community, QString &oid_str, QString &reply)
{
char oid_char[100];
strcpy(oid_char,oid_str.toStdString().c_str());
char ip_char[100];
strcpy(ip_char,ip.toStdString().c_str());
Snmp::socket_startup();
UdpAddress address(ip_char);
address.set_port(161);
Oid oid(oid_char);
snmp_version version = version2c;
int status;
Snmp snmp(status, 0, false);
Pdu pdu;
Vb vb;
vb.set_oid(oid);
pdu += vb;
CTarget ctarget(address);
ctarget.set_version(version);
ctarget.set_retry(1);
ctarget.set_timeout(100); //设置当前错误超时时间 原先是5000太长了
qDebug()<<"liuso-1";
char community_char[100];
strcpy(community_char,community.toStdString().c_str());
ctarget.set_readcommunity(community_char);
SnmpTarget *target;
target = &ctarget;
qDebug()<<"liuso-21";
status = snmp.get(pdu, *target);
qDebug()<<"liuso-2";
if (status == SNMP_CLASS_SUCCESS)
{
pdu.get_vb(vb, 0);
reply = vb.get_printable_value(); //获得指定OID的SNMP变量的值,并将其赋给reply;
reply.trimmed();
reply.trimmed();
}
qDebug()<<"liuso-3";
Snmp::socket_cleanup();
}