Indy komponente ping und icmp



  • hallo
    ich arbeite noch nicht lange mit der indy komponente und deswegen stellen sich für mich schon erste fragen

    ich möchte feststellen ob ein host im lan vorhanden ist also erstmal anpingen

    IdIcmpClient1->Ping(ip,unsigned short);
    

    stellt sich für mich die frage: wozu noch dieses unsigned short??
    genauso hier

    IdTCPClient1->Connect(1);
    

    wieso muss da noch n integer wert rein??

    nächste frage ist wie ich mit icmp oder anderen komponenten von indy informationen über den rechner zu bekommen den ich anpinge sprich rechnername oder wenns n router is das er mir das anzeigt etc...

    vielleicht kennt auch jemand ne gute seite wo ich infos zu den komponenten (speziell die zwei die ich oben gebraucht habe) finden kann

    vielen dank



  • Sends an echo request and receives an echo response.
    procedure Ping(ABuffer: String = ''; SequenceID: word = 0); //SequenceID = 0 oder?

    Ich rufe die Funktion ohne Prameter auf, schreibe die IP vorher in die
    Eigenschaft HOST, setze noch einen Timeoutwert und dann Funktioniert das
    ganze.

    IdIcmpClient1->Host = "192.168.002.001; //IP
     IdIcmpClient1->ReceiveTimeout = 1000; Timeout auf 1000ms //Timeout
     IdIcmpClient1->Ping();
    

    Allerdings verstehe ich den ReplyStatus nicht ganz.
    TReplyStatus = record
    BytesReceived: integer; //OK
    FromIpAddress: string; //OK
    MsgType: byte; // ???
    SequenceId: word; // Zählt immer hoch, bei meinem Router +1 bei anderen IP +2,oder +3 oder ...
    MsRoundTripTime: longword; //???
    TimeToLive: byte; //???
    -> führe ich den Ping mit meinem Prog aus ist TTL z.B 123
    bei 72 empfangenen Bytes .
    führe ich den Ping im DOS Fenster aus (Windows Ping)
    ist TTL für die gleiche IP 18 bei 32 empfangenen Bytes.

    ReplyStatusType: TReplyStatusTypes;
    -> TReplyStatusTypes = (rsEcho, rsError, rsTimeOut,
    rsErrorUnreachable, rsErrorTTLExceeded);
    end;



  • sushi schrieb:

    IdIcmpClient1->Ping(ip,unsigned short);
    

    vielleicht ist der unsigned short die anzahl der pings?

    IdTCPClient1->Connect(1);
    

    der Integer ist der Timeout: wenn der Server nicht innerhalb von TimeOut antwortet, geht IdTCPClient1 davon aus, dass der Server nicht online ist.


Anmelden zum Antworten