PING



  • Hallo!

    Habe ein Ping-Tolll gechrieben, wo man einen Server anpingen kann. Möchte nur statt dass die Auswertung kommt da steht dass zb. Server ist online.

    #include <iostream>
    #include <cstdlib> 
    #include <string> 
    
    using namespace std; 
    
    int main() { 
      cout << "IP eingeben:"; 
      string ip; 
      cin >> ip; 
    
      const string command = "PING " + ip + " -n 5";
      system(command.c_str());
      return 0;
    }
    

    Habe gehört dass es irgendwie mit errorlevel gehen kann. Weiss aber nicht 😕 genau wie

    MfG
    Michael



  • am sichersten ist es, wenn du den ping-output parst. aber aufwandstechnisch kannst dann schon wieder ping selber schreiben, das is nämlich nit viel 😉



  • Und wie schreibt man so einen Ping, habe das nämlich noch nie gemacht

    MfG
    Much 🙄



  • hi,

    ich würd dir raten einfach die ausgabe des ping zu betrachten. entweder antwort, oder nicht. 😃

    du brauchst aber keinen ping selber schreiben, wenn du dieses tool so unbedingt möchtest...

    hatte jetzt net viel zeit, drum evtl. ein bisschen feilen, aber es sollte gehen:

    #include <string>
    #include <iostream>
    using namespace std;
    
    int main()
    {
      char*  ptr;
      string command;
      string ip;
    
      ptr = new char[512];
    
      cout << "IP eingeben:";  
      cin  >> ip;  
    
      command = "PING " + ip + " -n 1";
      FILE *fp= _popen(command.c_str(),"r");
    
      sprintf(ptr,command.c_str());
    
      while(fgets(ptr,512,fp)!=NULL)
      {
        command = ptr;
        if(command.find("Antwort",0)==0){
          cout << endl << ip << " ist online" << endl;
          _pclose(fp);
          delete(ptr);
          return 0;
        }
      }
      cout << endl << ip << " ist offline" << endl;
      _pclose(fp);
      delete(ptr);
      return 1;
    }
    

    ein eigener ping wär natürlich schöner, aber auch aufwendiger...

    greetings,

    LukeX
    www.lukex.net



  • @Much2k
    Das errorlevel kannst du in einer Batch-Datei auswerten. Ungefähr so:

    rem Batch Datei für Ping
    rem %1 = IP-Adresse (Übergabeparameter)
    call ping %1 -n 1
    rem immer mit dem höchsten errorlevel beginnen, sonst klappts nicht
    if errorlevel=2 goto ERG2
    if errorlevel=1 goto ERG1
    rem Code wenn kein errorlevel zutrifft
    ...
    ERG2:
    rem Code wenn errorlevel=2
    ...
    ERG1:
    rem Code wenn errorlevel=1
    ...
    

Anmelden zum Antworten