我的套接字的想法是接收和发送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-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数据包?
答案 0 :(得分:0)
您的问题是strlen(数据包)值,由于00字节而为4。 strlen用于ASCII字符串,而不是二进制字符串。