Beiträge von hrban

    Hallo!

    ich bräuchte dringend jemanden, der sich mit dem Bertreff (Betriebssysteme - systemnahes Programmieren) auskennt und eine Anforderung in C programmieren kann. Natürlich gegen Bezahlung!

    Folgende Aufgabe wäre zu programmieren:
    Ziel

    • Kommunikation 2-er Prozesse über Sockets.

    • UNIX Daemon Konzept

    Übungsaufgabe

    Schreiben Sie eine Server Applikation zum Übertragen von Files über einen TCP Socket. Das Programm

    erhält als Argument einen Filenamen, sowie den Port der abzuhören ist. Das File soll auf dem

    angegebenen Port zur Verfügung stehen. Bei einer eingehenden Verbindung durch einen Client soll

    das File vom Server an den Client übertragen werden. Der Server soll als debugging Information die

    IP-Adresse sowie die Port Nummer des Clients auf stdout ausgeben. Nach erfolgter Übetragung soll

    der Server auf eine neue Verbindung warten. Starten Sie Server und Client von 2 unterschiedlichen

    Terminals. Verwenden Sie die Linux Programme nc bzw. telnet als Clients um Ihren Server zu testen.

    Aufruf:

    ./server port-nummer input-file

    nc 127.0.0.1 port-nummer, oder

    telnet 127.0.0.1 port-nummer

    Zusatzaufgabe

    Erweitern Sie den Server, sodass nun mehrere Übertragungen gleichzeitig möglich sind. Für jede

    eingehende Verbindung soll ein eigener Prozess geforked werden der den Datentransfer übernimmt,

    und am Ende des Transfers terminiert. Leiten Sie in den Kindprozessen jeweils stdout und stderr

    auf ein File um (server.pid.log).

    Der Server soll durch Auswertung des Signals SIGCHLD die exit Stati seiner Kinder abholen. Loggen

    Sie im Signalhandler mit wenn ein Kind terminiert.

    Hinweise:

    • Das Signal wird (unter anderem) den accept Befehl unterbrechen. Man muss dafür sorgen

    dass dieser Zustand erkannt, und der Befehl in diesem Fall wieder gestartet wird (errno auf

    EINTR überprüfen).

    • Setzen Sie das Flag SO_REUSEADDR des Server Sockets, damit nach einem Abbruch des

    Servers mit Ctrl-C dieser wieder am selben Port gestartet werden kann (Fehlermeldung

    “bind: Address already in use“).

    Wenn wer interesse hat, bitte eine kurze Mail an hrban@web.de mit Zeitaufwand und Kosten.

    Wäre sehr dringend....

    Danke