0
我的套接字的想法是接收和发送SNMP数据包 - GetRequest/GetResponse
。但是,套接字已经接收到SNMP数据包如何通过UDP发送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-PDU
(a2
)。
unsigned char * packet = "302902010004067075626c6963a21c...";
int r = sendto(my_socket, packet, strlen(packet), 0, (struct sockaddr *)&remote_addr, addr_len);
返回值或r
是4
,绝对是错误的,因为我的回应SNMP包packet
是大于4,为什么,因为它是一个指针?
此外,响应SNMP-Packet packet
不作为SNMP-Packet发送,它与packet
相比看起来不同,并且不会被解释为Wireshark中的SNMP-Packet。它看起来像:
我怎么能发送一个有效的SNMP的包?
如果你在Linux上工作,你可以使用'libsnmp-dev'的一个SNMP库。您可以使用该库的API创建SNMP数据包。 但您需要了解如何使用它。 – Gaurav
是的,我在Linux上工作,感谢提示。 – Sam
@GauravPathak你知道我在哪里可以找到libsnmp-dev的源代码或文档吗? – Sam