SNMP - Verbindung aufbauen und Traps empfangen
-
Würde gerne einen eigenen SNMP-Manager programmieren, der die Traps von einem Rechner entgegennimmt, wenn dieser Probleme hat (z.B. Plattenausfall). Der Rechner sendet mir gewisse OID’s wenn ein bestimmter Zustand auftritt. Habe es aber leider bis jetzt noch nicht geschafft, irgend etwas zu empfangen.
Ich benutze die Klasse CAsyncSocket für den folgenden Verbindungsaufbau:int iError = Socket->Create(162,SOCK_DGRAM); // Funktioniert, da ich eine 1 zurückbekomme iError = Socket->Connect("192.168.0.10",162); // Funktioniert auch, da ich eine 1 zurückbekommeAngeblich soll das alles sein. Wenn ich jetzt ein Ereignis auf dem Rechner auslöse und dieser einen Trap absetzt, kommt dieser aber leider nicht bei mir an. Jetzt sollte doch eigentlich die OnReceive-Funktion darauf anspringen oder nicht ????
Hat jemand ne Ahnung was da noch fehlt oder noch besser, kann mir jemand sagen woher ich eine Beispielklasse bekomme ????
Benutze übrigens VC++ 6.0Dank und Gruss
gorbo
-
Vielleicht hilft dir folgender Link weiter:
http://www.codeproject.com/KB/IP/ChatAppAsynchUDPSocks.aspx
Edit: Pardon, ist c#, hab ich nicht gesehen.

Edit2: Jetzt aber: http://www.codeproject.com/KB/cpp/UDP_with_CAsyncSocket.aspx

-
Ich weiss ja netwo Du das gelesen hast, dass Du Benachrichtigt wirst, aber laut Beschreibung mußt Du doch die einzelnen Traps auslesen indem Du dich von der Root durchhangelst. Oder haste du dich am SNMP-Server angemeldet das der dich automatisch Benachrichtigt.
Gruß Matthias
-
Der Manager kann beim Agenten gewisse Sachen abfragen, aber der Agent schickt die Traps von sich aus, ohne das der Manager beim Agent anfragt.
-
Ich dachte zumindest bis jetzt, dass ich die Traps automatisch erhalte wenn ein Event auftritt. Wie kann ich die denn auslesen ? Und was meinst du denn mit "Root durchhangeln". Muss ich jetzt eine anfrage "senden" und hoffen das ich dann was zurückbekomme ?
VG gorboCTecS schrieb:
Ich weiss ja netwo Du das gelesen hast, dass Du Benachrichtigt wirst, aber laut Beschreibung mußt Du doch die einzelnen Traps auslesen indem Du dich von der Root durchhangelst. Oder haste du dich am SNMP-Server angemeldet das der dich automatisch Benachrichtigt.
Gruß Matthias
-
Burkhi schrieb:
Vielleicht hilft dir folgender Link weiter:
http://www.codeproject.com/KB/IP/ChatAppAsynchUDPSocks.aspx
Edit: Pardon, ist c#, hab ich nicht gesehen.

Edit2: Jetzt aber: http://www.codeproject.com/KB/cpp/UDP_with_CAsyncSocket.aspx

Erst einmal vielen Dank für den Link!
Musste feststellen, dass in dem Beispiel überhaupt kein "Connect"-Befehl existiert. Dort wird lediglich ein Socket mit Create erzeugt. Das "OnSend"-Ereignis taucht dort noch auf, welches ich überhaupt gar nicht eingebaut hatte. Habe dieses jetzt eingefügt und das Ereignis wird sofort nach dem Create aufgerufen. Damit will mir der Socket wohl mitteilen, dass ich jetzt etwas senden könnte. Nur was soll ich jetzt senden ??? Ich möchte doch nur die Traps empfangen. Der Empfang wird in dem Beispiel mit "ReceiveFrom" eingeleitet wo auch die IP und der Port angegeben wird. Das würde dann Sinn machen. Habe nun mal einen Trap losgeschickt und mehrmals den ReceiveFrom-Befehl losgeschickt. Allerdings empfange ich leider auch nichts
Hast du noch ne Idee was ich falsch mache???Dank und Gruss
gorbo
-
Hast du auch dem Agenten (sprich dem Rechner, der die Traps erzeugt) die IP-Adresse des Managers (sprich der Rechner, auf dem deine Anwendung läuft) mitgeteilt?
-
Burkhi schrieb:
Hast du auch dem Agenten (sprich dem Rechner, der die Traps erzeugt) die IP-Adresse des Managers (sprich der Rechner, auf dem deine Anwendung läuft) mitgeteilt?
Die IP-Adresse habe ich dem Rechner auch mitgeteilt. Mit einem Freeware-Manager empfange ich auch den Trap. Habe noch ein anderen Rechner, der auch Traps verschickt. Bei diesem kann ich auch den Port (161/162 habe beides ausprobiert) sowie einen Community-Namen ("public") angegeben
VG gorbo