我正在编写一个getBulkRequest函数,它允许我一次请求一个信息列表。
现在,我想做一些简单的事情,通过在getBulkRequest中将“不重复”设置为"0“,从而使用getNextRequest对getNextRequest进行顺序设置。
这是我正在使用的格式,有人能告诉我我做得对不对:
switch(pdyType) {
case PdyType::GET_BULK_REQUEST:
for (QStringList::ConstIterator iter = oids.begin(); iter != oids.end(); ++iter)
{
QByteArray keyHolder;
//value
keyHolder.push_front(QByteArray(1, 0x00));
keyHolder.push_front(QByteArray(1, DataType::DATA_NULL));
//object identifier
QByteArray temp = encodeoid(*iter);
keyHolder.push_front(temp);
keyHolder.push_front(encodeLengthField(temp.size()));
keyHolder.push_front(QByteArray(1, DataType::OBJECT_ID));
//varbind
keyHolder.push_front(encodeLengthField(keyHolder.size()));
keyHolder.push_front(QByteArray(1, DataType::SEQUENCE));
datagram.push_front(keyHolder);
}
//max-repetitions
datagram.push_front(QByteArray(1, 5);
datagram.push_front(QByteArray(1, 1);
datagram.push_front(QByteArray(1, DataType::INTEGER);
//varbind list
datagram.push_front(QByteArray(encodeLengthField(datagram.size());
datagram.push_front(QByteArray(1, DataType::SEQUENCE);
//non-repeaters
datagram.push_front(QByteArray(1, 0);
datagram.push_front(QByteArray(1, 1);
datagram.push_front(QByteArray(1, DataType::INTEGER);
//requestId
datagram.push_front(QByteArray(1, requestId));
datagram.push_front(QByteArray(1, 1);
datagram.push_front(QByteArray(1, DataType::INTEGER);
//pdu
datagram.push_front(QByteArray(encodeLengthField(datagram.size()));
datagram.push_front(QByteArray(1, (unsigned char)pduType);
//community string
datagram.push_front(QByteArray(community.toLocal8Bit()));
datagram.push_front(QByteArray(encodeLengthField(community.size());
datagram.push_front(QByteArray(1, DataType::OCTET_STRING);
//version
datagram.push_front(QByteArray(1, 0));
datagram.push_front(QByteArray(1, 1);
datagram.push_front(QByteArray(1, DataType::INTEGER);
//message type
datagram.push_front(QByteArray(encodeLengthField(datagram.size()));
datagram.push_front(QByteArray(1, DataType::SEQUENCE);
break;
default:
break;
}
return datagram;通过QUdpSocket::writeDatagram设置getBulkRequest的格式正确吗?
我希望我能把我的问题说清楚。因为我不太清楚目前发生了什么,并试图读得更多。
发布于 2016-07-19 09:43:37
问:对于Oid,我是否只需要输入一个Oid(批量的第一项)?
是的,你只需要设置第一个OID就行了。
问:如果我希望从所述的Oid开始获得大量请求,并且在第一项之后得到以下4项,我是否只是将“最大重复次数”设置为5?
答:是的。5是为最大重复设置的最小值,但可以设置为更大的值(例如10)。您处理响应的方式是遍历响应PDU并每次提取每个OID。
希望能帮上忙。
https://stackoverflow.com/questions/37801580
复制相似问题