저는 한 번에 정보 목록을 요청할 수있는 getBulkRequest 함수를 작성하고 있습니다.SNMPv2 및 C++을 사용하여 getBulkRequest 함수 작성
지금은 getBulkRequest에서 "Non-Repetition"을 "0"으로 설정하여 GetBulkRequest를 사용하여 순차적으로 getNextRequest를 사용하여 간단한 작업을 수행하려고합니다.
- 형식을 올바르게 쓰고 있습니까?
- Oid의 경우 OID (벌크의 첫 번째 항목) 만 입력하면됩니까?
- 내가 명시된 Oid부터 시작하여 대량 요청을 받고 첫 번째 요청 이후 4 개 항목을 원한다면 "Max-Repetition"을 5로 간단하게 설정합니까?
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를 통해 제시 될 getBulkRequest에 대한 올바른 형식입니다 :
이 사람은 내가 오른쪽이나하지 그 일을하고 있는지에 저를 조언 할 수, 내가 사용하고있는 형식입니다 : : writeDatagram?
나는 내 문제를 명확하게 표현할 수 있기를 바랍니다. 나는 그 순간에 무슨 일이 일어나고 있는지, 그리고 더 많이 읽으려고하는지 잘 모르겠다.
조언이 나 도움이 되었습니까? 도움이 필요하다. – Cherple