Problem mit Ping



  • hallo
    ich arbeite mit einer der Indy komponenten und zwar mit der icmp-komponente

    ich möchte eine funktion davon abhängig machen ob ein ping funzt oder nich
    nur komischer weise bekomme ich das echo immer zurück auch wenn ich ip´s wie 999.65.566.1 anpinge oder so

    IdIcmpClient1->Ping(ip,1000);
    

    so hab ich erstmal das erstmal aufgerufen

    und lasse es dann ausgeben

    RichEdit1->Lines->Add(IntToStr(AReplyStatus.BytesReceived));
    

    komischer weise bekomme ich immer 72 bytes zurück außer meine firewall is an dann sinds null..
    frag ich mich wie ein echo zurückkommt wenn es nich mal ankommt?! kann mir vielleicht jemand helfen
    danke!



  • Kann ich nicht nachvollziehen (Indy 9.0.14).
    Bei unmöglichen IP-Adressen gibt's einen SocketError, und bei nicht erreichbaren Hosts ist der ReplyStatus leer, abgesehen von der Zeit.



  • so ich hab jetz schonmal einen kleinen fehler entdeckt
    wenn ich den ping ausführe gibt es ja den status
    ....FromIpAddress also von wem die bytes empfangen wurden
    und komischerweise ist diese adresse immer der localhost als mein eigener rechner vollkommen egal was ich eingebe
    ob 1.1.1.1 oder 999.999.999.999 die adresse von der angeblich die bytes empfangen wurden ist immer mein rechner also die 192.168.0.2 wie is das möglich???
    wie sollte ich mich immer selber anpingen?? wenn ich zb versuche meinen router anzupingen was ja möglich sein sollte ist auch da wieder mein rechner von dem die bytes angeblich kommen

    kann mir da jemand helfen es wäre echt super wichtig für mich weil einiges davon abhängt 🙂
    dankeschön

    hier vielleicht noch relevanter code

    //dem string "ip" wird die geprüfte ip aus dem textfeld zugewiesen
     ip=edit_ip->Text;
    
    TForm1::connect()
    {
     //der ping wird mit timetolive(ttl) =1 sec ausgeführt (timeout nach 1 sec)
     IdIcmpClient1->Ping(ip,1000);
    
     return 0;
    
    }
    
    void __fastcall TForm1::IdIcmpClient1Reply(TComponent *ASender,      const TReplyStatus &AReplyStatus)
    
    RichEdit1->Lines->Add("Antwort von " + AReplyStatus.FromIpAddress); //<-- ist immer localhost bei mir
     RichEdit1->Lines->Add(IntToStr(AReplyStatus.BytesReceived)); //wird 72 angezeigt also die empfangenen bytes
    


  • sushi schrieb:

    //dem string "ip" wird die geprüfte ip aus dem textfeld zugewiesen
    ip=edit_ip->Text;

    Die Zieladresse gehört in die Host-Property der ICMP-Komponente.



  • ja geil das funzt
    und ich hab gedacht es würde reichen wenn ich der funktion "ping" die ip zuweise
    dankeschön du hast mich um einiges weiter gebracht 👍


Anmelden zum Antworten