cover
Michael Ziegenbalg

Paralleles Programmieren in C/C++

Programmieren mit der Socket-Library in C/C++


Dieses Buch widme ich meinen beiden jüngsten Enkeln Yannik und Enno


BookRix GmbH & Co. KG
80331 München

Paralleles Programmieren in C/C++

 

 

 

 

 

 

 

 

 

 

Paralleles Programmieren in C/C++

 

Programmieren mit der Socket-Library  in C/C++

 

Von

Michael Ziegenbalg

 

 

 

 

 

 

 

 

 

 

1. Einleitung

Die vorliegende Ausarbeitung ist Teil  der Vorlesung „Betriebsysteme“  von Michael Ziegenbalg .

 

1.1 Aufbau und Ziel der Dokumentation

Die vorliegende Dokumentation ist in einen rein theoretischen Teil und in einen C/C++ bezogenen Teil aufgegliedert. Im ersten Teil werden allgemeingültige Fragen und Konzepte zu Sockets behandelt und somit erläutert, was Sockets überhaupt sind und was man mit ihnen programmieren kann.

Im zweiten programmiersprachenbezogenen Teil hingegen werden einige Strukturen von Sockets dargestellt und schliesslich die Verwendung von Sockets bis hin zu einem lauffähigen Programm erklärt.

 

Ziel dieser Ausarbeitung ist es nicht, jeglichen möglichen Aspekt der Socketprogrammierung aufzuzeigen, sondern vielmehr unterstützend zu der von uns im Rahmen der Vorlesung gehaltenen Präsentation einen Leitfaden zu der Verwendung von Sockets zu geben, in dem man später den Inhalt der Präsentation noch einmal grob nachlesen und nachprogrammieren kann.

2. Sockets - Eine Einführung

Sockets kann amn sich vorstellen wie Steckdosen, die eine Schnitstelle zur Elektrizität darstellen. Wenn man sie richtig einsetzt, dann funktionieren sie wie Steckdosen

2.1 Hintergrund

An der University of California in Berkeley wurde 1981 die Socket-Programmierschnittstelle zur Realisierung von Interprozesskommunikation für BSD-UNIX entwickelt. Seitdem stellen Sockets unter UNIX den Standart und die Grundlage für die allermeisten Netzwerkapplikationen dar und ermöglichen die Kommunikation zwischen Prozessen sowohl im Netzwerk, als auch lokal auf ein und demselben Host.

Inzwischen gehören Sockets durch die Winsock-Schnittstelle auch unter Windows zum Standart und ermöglichen auch die Kommunikation von Prozessen auf unterschiedlichen Systemen.

 

2.2 Grundlagen

Ein Socket ist ein Endpunkt der Kommunikationsverbindung zwischen zwei Prozessen und jeder öffentliche Socket ist eindeutig identifizierbar durch seine Adresse und seine Portnummer.

Sockets sind nicht immer sofort von anderen Prozessen kontaktierbar, sondern erst, wenn sie einen „Namen“ haben, d.h. erst, wenn sie die oben genannte Identifizierung erhalten haben, sind die öffentlich bekannt. Bis dahin weiss nur der Erzeugerprozess von der Existenz „seines Sockets“.

Die Programmierschnittstelle des Sockets ist das Socket-Interface, welches dem Programmierer einen einfachen Zugriff auf die Funktionalitäten der TCP/IP-Protokollfamilie erlaubt.

3. Netzwerkverbindungen

Im nachfolenden erfolgt eine Beschreibung der wichtigsten Vernnetzungseigenschaften von Unix.

3.1 Netzwerkverbindungen allgemein

Grundsätzlich stellt eine Netzwerkverbindung eine Verbindung zwischen zwei Prozessen dar, die jeweils auf einem definierten Host über ein festgelegtes Protokoll miteinander kommunizieren.

Aus diesem Grund kann eine solche Netzwerkverbindung ganz allgemein ausgedrückt durch folgendes 5-Tupel charakterisiert werden:

 

(Protokoll, lokaler Host, lokaler Prozess, fremder Host, fremder Prozess)

 

Die Art der Adressierung der Hosts und die Identifikation des jeweiligen Prozesses wird durch das verwendete Protokoll bestimmt und kann sich so von Protokoll zu Protokoll stark unterscheiden.

Da Sockets jedoch auf die TCP/IP-Protokollfamilie aufbauen ist hier auch nur die genauere Erläuterung des Adressierungsformates für diese Protokolle von Bedeutung. Aus diesem Grund werden in den folgenden Abschnitten die dafür relevanten Informationen genauer aufgeführt.