L'idée de mon socket est de recevoir et d'envoyer des paquets SNMP - GetRequest/GetResponse
. Cependant, la prise déjà recevoir des paquets SNMPComment envoyer un paquet SNMP via UDP
...
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);
...
Maintenant, je veux répondre à la demande d'un SNMP paquet qui est représente sous forme de chaîne. Remarque: La réponse contient un GetResponse-PDU
(a2
).
unsigned char * packet = "302902010004067075626c6963a21c...";
int r = sendto(my_socket, packet, strlen(packet), 0, (struct sockaddr *)&remote_addr, addr_len);
La valeur de retour ou r
est 4
et est certainement mal parce que ma réponse est plus grande que SNMP paquet packet
4. Pourquoi, parce que c'est un pointeur ?. En outre, la réponse SNMP-Packet packet
n'est pas envoyée en tant que paquet SNMP, elle est différente de packet
et n'est pas interprétée comme un paquet SNMP dans Wireshark. Il ressemble à ça:
Comment puis-je envoyer un SNMP paquet valide?
Si vous travaillez sous Linux, vous pouvez utiliser 'libsnmp-dev' une bibliothèque SNMP. Vous pouvez utiliser les API de cette bibliothèque pour créer un paquet SNMP. Mais vous devez savoir comment l'utiliser. – Gaurav
Oui, je travaille sur Linux, merci pour l'indice. – Sam
@GauravPathak Savez-vous où je peux trouver les sources ou une documentation de 'libsnmp-dev'? – Sam