Как инициализировать SNMP-агента в C++ Builder
Ниже приведен пример который где-то лежал в Inete. Он перечисляет все IP адреса интерфейсов на локальной машине. Можно также получить другую информацию о локальной машине указав другой OID.
Работает он замечательно, но только с IP адресом 127.0.0.1 и comunity "public" они по видимому используются по умолчанию.:confused:
HANDLE PollForTrapEvent;
AsnObjectIdentifier SupportedView;
SnmpVarBindList list_v;
SnmpVarBind elem[1];
AsnInteger32 errStatus, errIndex;
UINT OID_ipAdEntAddr[] = { 1, 3, 6, 1, 2, 1, 4 , 20, 1 ,1 };
AsnObjectIdentifier MIB_ipAdEntAddr = { sizeof(OID_ipAdEntAddr)/sizeof(UINT), OID_ipAdEntAddr };
BOOL status = SnmpExtensionInit(0,&PollForTrapEvent,&SupportedView);
if(!status)
{
return;
}
SnmpUtilOidCpy(&elem[0].name, &MIB_ipAdEntAddr);
//elem[0].value.asnValue.address.stream = new BYTE[10];
list_v.list = elem;
list_v.len = 1;
SnmpExtensionQuery(SNMP_PDU_GETNEXT, &list_v, &errStatus, &errIndex);
switch(errStatus)
{
case SNMP_ERRORSTATUS_NOERROR:
ShowMessage("Have sended successfully!");
break;
case SNMP_ERRORSTATUS_NOSUCHNAME:
ShowMessage("The requested operation identified an unknown variable");
return;
default:
;
}
int ret = SnmpUtilOidNCmp(&elem[0].name,&MIB_ipAdEntAddr,MIB_ipAdEntAddr.idLength);
DWORD dtmp = *((DWORD *)elem[0].value.asnValue.address.stream);
Подскажите пожалуйста, каким образом можно его заставить работать с другими IP и comunity? Где их необходимо указать?
Очень нужно для благих целей!
В Internet по этому поводу информации не нашел, покрайней мере в русскоязычной его части.