如何通过UDP发送SNMP数据包

时间:2017-07-25 07:02:22

标签: c snmp

我的套接字的想法是接收和发送SNMP数据包 - GetRequest/GetResponse。但是,套接字已经收到SNMP数据包

...
unsigned char buf[8192];
...
for (;;) {
  // Receive snmp message from snmp manager
  recv_len = recvfrom(my_socket, buf, BUFSIZE, 0, (struct sockaddr
*)&remote_addr, &addr_len);
...

现在我想通过一个表示为字符串的SNMP-Packet来回答请求。注意:回复包含GetResponse-PDUa2)。

unsigned char * packet = "302902010004067075626c6963a21c...";
int r = sendto(my_socket, packet, strlen(packet), 0, (struct sockaddr *)&remote_addr, addr_len);

返回值或r4并且肯定是错误的,因为我的响应SNMP数据包packet大于4.为什么,因为它是一个指针?

此外,响应SNMP-Packet packet不作为SNMP-Packet发送,与packet相比看起来不同,并且在Wireshark中不被解释为SNMP-Packet。它看起来像是:

enter image description here

如何发送有效的SNMP数据包?

1 个答案:

答案 0 :(得分:0)

您的问题是strlen(数据包)值,由于00字节而为4。 strlen用于ASCII字符串,而不是二进制字符串。