Beispiel-Programme

Die Beispiel-Programme liegen gesammelt in einem ZIP-Archiv vor, können aber auch einzeln betrachtet werden. Für die UNIX-Version wurde das Programm unter Xubuntu Linux 18.10 getestet, sollte aber auch auf anderen POSIX-konformen Systemen funktionieren. Die Windows-Version wurde unter Windows 10 getestet. In beiden Fällen wurde der GCC-Compiler benutzt.

Die Beispiel-Programme beinhalten Funktionen, die regen Gebrauch von Ergebnis-Parametern machen. Grund für diese Entscheidung war der Wunsch nach einheitlichen Rückgabewerten und kurzen, einem klar erkennbaren Zweck gewidmeten Funktionen. Ich hoffe die zusätzliche Zeiger-Indirektion ist für Programmieranfänger nicht zu verwirrend.

Name Beschreibung
linux/01-hello.c
windows/01-hello.c
"Hello World!"-Programm um zu sehen, dass die Umgebung richtig eingerichtet ist.
  • Erstellen mehrerer TCP-Sockets
  • Ausgabe der numerischen Werte
linux/02-daytime.c
windows/02-daytime.c
Ein Client für das Daytime-Protokoll nach RFC 867 via TCP.
  • Auflösen eines Hostnamens
  • Erstellen eines TCP-Sockets
  • Verbinden eines TCP-Sockets
  • Empfangen von Daten
  • Schließen eines Sockets
linux/03-http-print.c
windows/03-http-print.c
Ein Server der sichtbar macht was ein Webbrowser bei einer Anfrage so alles überträgt.
  • Erstellen eines TCP-Sockets
  • Binden eines TCP-Sockets an eine lokale Adresse
  • Aktivieren des Listen-Modus
  • Annehmen eines Clients
  • Empfangen von Daten
  • Schließen eines Sockets
linux/04-echo.c
windows/04-echo.c
Das Echo-Protokoll nach RFC 862 via UDP.
  • Auflösen eines Hostnamens
  • Erstellen eines UDP-Sockets
  • Senden eines UDP-Datagramms
  • Empfangen eines UDP-Datagramms
  • Schließen eines Sockets
linux/05-select.c
windows/05-select.c
Ein Server für mehrere Clients im gleichen Prozess mittels select().
  • Erstellen eines TCP-Sockets
  • Binden eines TCP-Sockets an eine lokale Adresse
  • Aktivieren des Listen-Modus
  • Hauptschleife mit
    • Überwachen mehrerer Sockets mit select()
    • Annehmen neuer Clients
    • Empfangen von Daten von bestehenden Clients
  • Empfangen von Daten
  • Schließen eines Sockets
linux/06-fork.c Ein Server für mehrere Clients mit mehreren Prozessen (UNIX).
  • Erstellen eines TCP-Sockets
  • Binden eines TCP-Sockets an eine lokale Adresse
  • Aktivieren des Listen-Modus
  • Installieren eines Signal-Handlers
  • Hauptschleife mit
    • Annehmen neuer Clients
    • Starten neuer Prozesse zur Behandlung der Clients
    • Ausführen eines externen Programms mit Umleitung der Ausgabe
  • Schließen eines Sockets
  • Vermeiden von Zombie-Prozessen
windows/07-threads.c Ein Server für mehrere Clients mit mehreren Threads (Windows).
  • Erstellen eines TCP-Sockets
  • Binden eines TCP-Sockets an eine lokale Adresse
  • Aktivieren des Listen-Modus
  • Hauptschleife mit
    • Annehmen neuer Clients
    • Starten neuer Threads zur Behandlung der Clients
    • Diverse Variablen-Zugriffe, geschützt durch kritische Abschnitte
  • Schließen eines Sockets
linux/08-ping.c Ein einfaches Ping-Programm zur Demonstration von Raw-Sockets.
  • Erstellen eines Raw-Sockets für ICMP
  • Setzen der Socket-Option IP_HDRINCL
  • Senden eines ICMP-Echo-Requests mit Timestamp
  • Empfangen eines ICMP-Echo-Replies
  • Berechnung der Paket-Laufzeit
  • Schließen eines Sockets

Zurück zur Hauptseite