Socket-Beispiele - WINSOCK nutzend

My_INET_DatabaseFunctions

Bei der Socketprogrammierung nutzt man Datenbasisfunktionen zur Adressenauflösung usw.. Es sollen die Datenbasisfunktionen und die entsprechenden Datenstrukturen angewendet werden.

  • gethostbyname(), nutzend hostent, zur Ermittlung der IP-Adresse bei gegebenem Hostnamen
  • gethostbyaddr(), nutzend hostent, zur Ermittlung des Hostnamens bei gegebener IP-Adresse.
  • getserbyname(), nutzend servent, zur Ermittlung der Portnummer bei gegebenem Dienstname.
  • getserbyport(), nutzend servent, zur Ermittlung des Dienstnamens bei gegebener Portnummer.

Anleitung.PDF    Programm.EXE

WSA_Startup_Cleanup

Beim Socket-API unter Windows müssen sich Anwendungen  an- und abmelden.

Beim Anmelden werden Ressourcen allokiert, die beim Abmelden wieder frei gegeben werden.

Mittels der Struktur WSAData kann man die Eigenschaften des Socket-API ermitteln. 

Anleitung.PDF   Programm.EXE

 

MyTime1_RFC868 WINSOCK_STREAM

Ziele dieses Beispiels sind:

  • Kennen lernen des grundlegenden Umgangs mit dem Socket-API
  • Umsetzung eines Protokolls in eine Anwendung anhand des Time-Protokolls RFC 868
  • Nutzung von Standardfunktionen zur Zeit-/Datumsanzeige 

Anleitung.PDF    Programm.EXE

MyTime2_RFC868 WINSOCK_STREAM

Ziele dieses Beispiels sind:

  • Erweiterung des Beispiels MyTime1 durch Eingabemöglichkeit eines beliebigen Zeitservers
  • Nutzung der Funktion gethostbyname() zur Auflösung der symbolischen Adresse auf die IP-Adresse.
  • Nutzung der Datenstruktur hostent

Anleitung.PDF    Programm.EXE

MyTime3_RFC868 WINSOCK_DGRAM

Ziele dieses Beispiels sind:

  • Funktion wie im Beispiels MyTime1, aber Verwendung eines DATAGRAM-Sockets.
  • Ein Timeserver nach RFC 868 kann seinen Dienst sowohl über TCP als auch üner UDP anbieten.
  • Während TCP Standard ist, wird UDP nur teilweise unterstützt.

Anleitung.PDF    Programm.EXE

MyEchoClient1 WINSOCK_STREAM

Ziele dieses Beispiels sind:

  • Es soll ein String-Echo-Clt auf WINSOCK aufgesetzt werden.
  • Der Client sendet an Server einen Text, der in Großbuchstaben gewandelt zurück gesendet wird.
  • Der Server arbeite lokal auf Port 6666.
  • Sein Hostname lautet "localhost" und seine IP-Adresse ist "127.0.0.1".
  • VORAUSSETZUNG:
    • Downloaden Sie zuerst die Serveranwendung "EchoServer.EXE" und starten diese, siehe unten.
    • Danach downloaden Sie die beispielhafte ClientAnwendung "EchoClient.EXE".
    • Testen Sie die Funktionalität indem Sie die Funktionen WSAStartup(), socket(), connect(), ... der Reihe nach aufrufen.
  • Programmieren Sie anschließend eine eigene Anwendung "MyEchoClient1".

Anleitung.PDFEchoClient.EXE

Voraussetzung für dieses Programmierbeispiel:

  • Downloaden Sie zuerst die Serveranwendung "EchoServer.EXE" und starten diese.
  • Der Server arbeite lokal auf Port 6666, seine IP-Adresse ist "127.0.0.1".

EchoServer.EXE

MyEchoClient2 WINSOCK_STREAM

Ziele dieses Beispiels sind:

  • Dieses Beispiel ist eine Erweiterung von MyEchoClient1.
  • Es soll ein String-Echo-Clt auf WINSOCK aufgesetzt werden. 
  • Der Client sendet an Server einen Text, der in Großbuchstaben gewandelt zurück gesendet wird.
  • Die Serveranwendung soll aber auf einem beliebigen Host und Port laufen und der Sendetext soll variierbar sein.

Anleitung.PDF    EchoClient.EXE     EchoServer.EXE

MyFD_SET1

Vorbemerkung

  • Wenn man eine Serveranwendung programmieren will, muß man den Serversocket und die Sockets der aktiven Verbindungen verwalten.
  • Dazu nutzt man die Strukturen vom Typ fd_set und diverse API-Funktionen.

Ziele dieses Beispiels sind:

  • Umgang mit der Struktur fd_set, in der alle Sockets vom API angezeigt werden, die zu lesen oder zu akzeptieren sind.
  • Nutzung der API-Funktionen: FD_ZERO, FD_SET, FD_CLR, FD_ISSET

Anleitung.PDF      Programmierbeispiel.EXE

MyFD_SET2

Vorbemerkung

  • In MyFD_SET1 lernten Sie den Umgang mit Strukturen vom Typ fd_set und der API-Funktionen: FD_ZERO, FD_SET, FD_CLR, FD_ISSET kennen.

Ziele dieses Beispiels sind:

  • Nutzung der Funktion select() zur Überprüfung der Lesbarkeit/Schreibbarkeit von Sockets.
  • Dazu wird das Beispiel MyEchoClt1 erweitert.

Beachten Sie, dass Sie zum Ausprobieren des Bespiels vorher den EchoServer downloaden und starten.

Anleitung.PDF      Programmierbeispiel.EXE   DerEchoServer.EXE

MyStringEchoSrv1_Select

Ziele dieses Beispiels sind:

  • Die Programmierung einer Serveranwendung auf WINSOCK
  • Ein Echoserver soll seinen Dienst am TCP-Port 6666 erbringen.
  • Er soll ankommende Verbindungen entgegennehmen, die gesendeten Nachrichten zurüch an den Empfänger senden.
  • Viele der Funktionen sind blockierend, deshalb wird vor dem Aufruf solcher Funktionen, die nicht-blockierende Funktion select() genutzt.
  • select() wird im Poll-Mode aufgerufen.

Anleitung.PDF      Programmierbeispiel.EXE

MyStringEchoSrv2_Threads

Ziele dieses Beispiels sind:

  • Die Programmierung einer Serveranwendung auf WINSOCK
  • Ein Echoserver soll seinen Dienst am TCP-Port 6666 erbringen.
  • Er soll ankommende Verbindungen entgegennehmen, die gesendeten Nachrichten zurüch an den Empfänger senden.
  • Blockierende Funktionen accept() und recv() werden in einem Thread aufgerufen. Es blockiert der Thread aber nicht die Anwendung.

Anleitung.PDF      Programmierbeispiel.EXE