新手提問,我接收到SNMP 訊息之后,為什么回復訊息不從161埠回復, 如何才能通過161埠回復:
接收
ret = SnmpRecvMsg(hSession, &hSrcAgent, &hDstAgent, &hContext, &hRecvPDU);
ret = SnmpGetPduData(hRecvPDU, &pduType, &requestId, &status, &index, &hRecvVbl);
處理及回復
count = SnmpCountVbl(hRecvVbl);
i = SNMP_SYNTAX_INT;
for(i=1; i<=count; i++)
{
ret = SnmpGetVb(hRecvVbl, i, &name, &value);
if(ret != SNMPAPI_SUCCESS)
{
printf("Error: %d\n", SnmpGetLastError(hSession));
continue;
}
ret = SnmpOidToStr(&name, sizeof(buffer), buffer);
if(ret == SNMPAPI_FAILURE)
{
printf("Error1: %d\n", SnmpGetLastError(hSession));
continue;
}
printf("name:%s type:%d\n", buffer, value.syntax);
if(value.syntax == SNMP_SYNTAX_INT)
{
printf("Value: %d\n", value.value.sNumber);
}
}
smiOCTETS obj;
HSNMP_VBL hvbl;
HSNMP_PDU pdu;
obj.len = strlen(community);
obj.ptr = (smiLPBYTE)community;
hContext = SnmpStrToContext(hSession, &obj);
hvbl = SnmpCreateVbl(hSession, NULL, NULL);
ret = SnmpStrToOid(".1.3.6.1.2.1.25.2.2.0", &name);
ret = SnmpSetVb(hvbl, 0, &name, NULL);
pdu = SnmpCreatePdu(hSession, SNMP_PDU_RESPONSE, 0, 0, 0, hvbl);
ret = SnmpSendMsg(hSession, hDstAgent, hSrcAgent, hContext, pdu);
uj5u.com熱心網友回復:
抓包 ?uj5u.com熱心網友回復:
恩, 抓包看到的, 發送過來的 src port = 161,不過回復過去的dst port 不是 161, 還有一個埠是對應的
uj5u.com熱心網友回復:
在代理行程端是用熟知埠161倆接收get或set報文,而在管理行程端是用熟知埠162來接收trap報文 ?轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/75402.html
標籤:網絡編程
上一篇:CMake 3.11.0 錯誤
