Auto Restarter



  • Hallo Leute 🙂

    Ich Lerne gerade C++ und arbeite gerade an meinem neuen Programm.

    Erstmal was das programm machen soll.

    Das Programm soll wenn z.B. der Login Server abschmiert ihn neu starten.

    In einer .bat Datei würde ich es so machen :

    @ping 127.0.0.1 -n 3 -w 1000 > nul
    echo.
    echo.
    echo.
    echo AuthSvr Auto Restarter initialized ...
    title Login Server Auto Restarter
    echo.
    :AuthSvr
    echo AuthSvr started.
    echo AuthSvr started.
    echo.
    start /wait AuthSvrT.exe
    echo (Úte%) (%time%) WARNING: AuthSvr got crashed restarting ...
    echo (Úte%) (%time%) WARNING: AuthSvr got crashed restarting ...
    echo (Úte%) (%time%) Restart Sucessfully.
    echo (Úte%) (%time%) Restart Sucessfully.
    echo.
    goto AuthSvr
    

    Nun möchte ich das selbe in einem C++ Programm unter bringen da der Server aus folgedem besteht :

    Login Server,
    Database Server und MainServer.

    Das was ich nun nicht weis und auch per Google nicht herrausgefunden habe (vl. nach den falschen stichpunkten gesucht)

    wie ich das mit dem (Úte%)/(Úte%) und dem Ping mache das er dann neu startet.

    Die Server kann ich ja mit

    system("name.exe");}
    

    Neustarten.

    Dafür ahbe ich in meinem C++ programm es so gemacht das man die Namen eingeben kann.

    Was ich eigentlich brauche kann man sich ja nun eig. denken.

    Es soll ja angezeigt werden wann der Server gecrashed ist und danach soll er neu starten.

    Hier mein - bestimmt verbesserungswürdiger Code :

    #include <cstdlib>
    #include <iostream>
    #include <windows.h>
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
    
    SetConsoleTitle( "KalOnline Server Restarter by Goldy - V0.1" );
    
    char loginname[255];
    char dbname[255];
    char mainname[255];
    
    {
    
    HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hStdout,FOREGROUND_RED | FOREGROUND_INTENSITY);
    
    cout << " Welcome to the Server Restarter by Goldy - (C) 2011\n\n" << endl;
    }
    
    {
    HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hStdout,FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY);
    cout << " Type the name of the Login Server : ";
    cin.getline(loginname, 255, '\n');
    cout << "\n Type the name of the Database Server : ";
    cin.getline(dbname, 255, '\n');
    cout << "\n Type the name of the Main Server : ";
    cin.getline(mainname, 255, '\n');
    }
    
    {
    HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hStdout,FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
    
    cout << "\n\n Name of Login Server : " << loginname << endl;
    cout << " Name of Database Server : " << dbname << endl;
    cout << " Name of Main Server : " << mainname << endl;
    cout << "\n" << endl;
    }
    
    HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hStdout,FOREGROUND_BLUE | FOREGROUND_INTENSITY);
    
    Sleep(1500);
    cout << " " << loginname << " Auto Restarter successfully initialized " << endl;
    Sleep(1500);
    cout << " " << dbname << " Auto Restarter successfully initialized " << endl;
    Sleep(1500);
    cout << " " << mainname << " Auto Restarter successfully initialized \n\n" << endl;
    
    system(" PAUSE ");
    return EXIT_SUCCESS;
    
    }
    


  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x) in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • ka ob das so geht, aber ich würde mal versuchen auf dem mainserver die processliste mit WaitForSingleObject zu überwachen. wenn sich in der processliste etwas tut, ein neuer process dazukommt oder sich einer verabschiedet, durchläufst du die processliste und kuckst ob dein loginserver noch in der processliste dabei ist.



  • @DosLike
    Hast du schonmal was von formatierung gehört? Ist ja grauenhaft! 😉

    DosLike schrieb:

    Hallo Leute 🙂

    Die Server kann ich ja mit

    system("name.exe");}
    

    Neustarten.

    ...
    ...

    }

    system() ist sicherheitstechnisch und auch sonnst nie eine gute Wahl!
    Besser:
    ShellExecute Function
    http://msdn.microsoft.com/en-us/library/bb762153(v=vs.85).aspx
    CreateProcess Function
    http://msdn.microsoft.com/en-us/library/ms682425(v=vs.85).aspx



  • Wie kann ich meine Variable "loginname" damit benutzen?



  • drück dich mal ein wenig präziser aus.


Anmelden zum Antworten