Socket-Programmierungsaufgabe



  • Hab demnächst ne Klausur, dazu haben wir ne Übungsaufgabe leider hab ich ned viel Ahnung davon. Vielleicht kann sie wer lösen.

    1.Der Aufruf select() der Hauptschleife des Internetdämons kehrt mit -1 zurück. Nun möchte INETD prüfen, welchen Services dafür verantwortlich sind, um dann diese Services zu "beenden" und neu zu starten. Erstellen Sie zum Prüfen der Services die Routine check_server(). Die Routine soll darüber hinaus fehlerhafte Services beenden und den "Restart vorbereiten. Die hierzu benötigte Information wird von INETD in dem folgenden Speicherbereich verwaltet.
    typedef struct inet_srv_struct * INET_SRV_PTR;
    typedef struct inet_srv_struct
    {
    int id; /*Server-ID*
    int lsock; /*Listen Socket Nummer*/
    int retries; /*Versuche Socket zu öffnen*/
    INET_SRV_PTR next; /*nächster Service*/
    } INET_SRV_STRUCT;

    Lösungsansatz:
    static INET_SRV PTR servers = NULL; /*Liste bearbeiteter Services*/
    int check_server(servers)
    INET_SRV_PTR servers;
    {INET_SRV_PTR ptr;
    fd_set fds;
    int erg; res
    struct timeval tv;
    ...
    Wie gehts weiter?

    2.Nennen Sie 3 Socket-Funktionen, die den aufrufenden Prozess blockieren können! Was kann man tun, um das Blockieren zu verhindern bzw.vermeiden??



  • Wenn es nur eine Übungsaufgabe ist, dann wird dir dein Lehrer dir die Lösung sicher in der nächsten Stunde geben. Ihm kannst du dann auch Fragen stellen, wenn du was nicht verstehst.

    Falls du eine speziellere Frage hast, dann stell sie hier. Noch eine Frage an dich: Warum heißt eine Übungsaufgabe Übungsaufgabe?

    Ein Tipp:
    Wenn die Funktion recv eine Zahl kleiner als 1 (bei nicht blockierenden 0) zurück gibt, ist meistens etwas nicht in Ordnung, bzw. das Socket ungültig.


Anmelden zum Antworten