Lade Inhalt...

Socket-Programmierung

Referat / Aufsatz (Schule) 2004 13 Seiten

Informatik - Programmierung

Leseprobe

Inhaltsverzeichnis

1. Einführung

2. Geschichte

3. Allgemeines

4. Socket Typen

5. Prozessverwaltung

6. Beispielprogramm
- Winsock starten
- Socket erstellen
- Connecten
- Daten empfangen
- Daten senden
- Socket schliesen
- Winsock aufräumen
- Quelltext

7. Literaturverzeichnis

1.) Einführung

Was sind überhaupt Sockets?

Ein Socket (deutscht: Sockel, Stecker) ist ein eine einheitliche Schnittstelle zwischen der Internet und Transportschicht aus dem Internetmodell (Bsp.: TCP/IP) und der Anwedungsschicht (Bsp.: HTTP). Wenn wir also ein Programm schreiben wollen, dass mittels Netzwerk mit einem anderem Programm auf dem anderen Computer kommunizieren sollte, müssen wir auf Sockets zurückgreifen.

2.) Geschichte

Die Entwicklung des Socket-Interfaces lies nicht lange auf sich warten. Es bestand früher das Problem, dass man keine konkreten Parameter und Befehle für die Kommunkationsumsetzung der verschiedenen Protokolle hatte. Und dies hat deutlicht die Programmierung für Netzwerkanwendungen erschwert.

Schließlich entstand Anfang der 80er, im University of California in Berkeley als Ergebnis der langjährigen Forschungsarbeiten ein neues System: BSD-Unix. Es enthielt die API-Socket, die sich schon recht bald als De facto-Standart etablierten. Auch Microsoft übernahm schon recht bald das Socket-Konzept und modellierte daraufhin, das einwenig veränderte Windows Socket (Winsock), dass heute in der zweiten Version vorliegt und die Grundlage der Netzwerkprogrammierung der Windows Betriebssystemen bildet.

3.) Allgemeines

Ein Socket stellt die Kommunikationsschnittstelle zwischen zwei Pogrammen auf der Netzwerkbasis dar. Es gibt insgesamt zwei Socket-Klassen: Client und Server.

Beide werden vom Betriebssystem verwaltet und beide können sowohl Daten verschicken, als auch Daten empfangen.

Die Sockets unterstützen das gängige Netzwerkkonzept:

- Verbindungsaufbau
- Datenaustausch
- Verbindungsende

Sie sind definiert durch die Identifikationsnummer (IP) des Remote, Local-Host und die Portnummer des Remote, Local-Host.

Außerdem arbeiten die Berkley-Sockets auf dem so genannten everything-is-a-file -

Konzept. Das heißt die Sockets können wie gängige Dateien gesehen werden, die per Eingabe/Ausgabe-Behandlung (I/O) behandelt werden können. Genau das verschaffte den Berkley-Sockets soviel Durchsetzungvermögen und Erfolg.

Dabei werden die Sockets wie normale Dateien geöffnet (dafür verwendet man jedoch nicht open(), sondern socket() ) und können wie normale Dateien mit close() geschlossen werden.

Die Daten senden und die Daten empfangen kann man dann mittels write() und read().

Unter Windows haben sich jeodoch die send() and recv() Methoden mehr etabliert. Außerdem muss man beim Windows, bevor man den Socket öffnet ihn mittels des Befehls WSAStarup „aufwärmen“.

4.) Socket Typen

Die Sockets lassen sich jedoch auch noch weiter unterteilen. Es gibt zwei Typen von Sockets die auf der Transportschicht arbeiten: Stream Sockets und Datagram Sockets. Stream Sockets sind dabei die Verbindungsorientieren und sicheren und werden meistens durch das Protokoll TCP vertretten. Datagram Sockets sind die verbindungslosen Sockets und verwenden meistens das Protokoll UDP.

Die Schritte die man dabei vorgeht, sind wie folgt aufgebaut (WINSOCK):

Abbildung in dieser Leseprobe nicht enthalten

5.) Prozessverwaltung

Eines der wichtigen Sachen bei den Sockets stellt das sogenannante handling() auf. Wolle man nun mit dem Server nicht einen Client, sondern 100 gleichzeitig verwalten, reicht da ein Socket nicht aus. Hierfür stehen andere Möglichkeiten zur Verfügung: zum einen könnte man mehrere Socketprozesse kreieren, die einzeln die eingehenden Verbindungen annehmen. Zum anderen könnte man einfach mit dem Befehl select() mehrere Prozesse überwachen und einzeln auf ihre Anfragen reagieren.

Was man jedoch bei den beiden Möglichkeiten beachten sollte, ist die Sicherheit. Denn es ist nämlich ziemlich leicht einen schlecht programmierten, mehrprozessigen Server durch Buffer Overlow (Zu groß verschickte Daten / Zu viele Verbindungen) zum Absturz zu bringen..

6.) Beispiel-Programm

Nun schrieben wir ein kleines Beispiel-Client-Programm. Dabei gehen wir alle wichtigen Schritte von oben bis unten durch. Genau so wie im [C-Worker] Tutorial. Das Programm soll sich am Anfang mit dem Server verbinden, vom ihm erst einmal die Daten empfangen und dann ihm „Hello World“ sendet.

Die Umsetzung erfolgt mit dem Dev-C++ Compiler unter Windows. Achtung! Bevor man zu programmieren anfängt muss man unter

Projekte->Projekt Optionen->Parameter->Linker "-lwsock32" einfügen, um die Winsock Komponente benutzbar zu machen.

1. ) Als erstes wird der Winsock gestartet:

Abbildung in dieser Leseprobe nicht enthalten

Details

Seiten
13
Jahr
2004
Dateigröße
380 KB
Sprache
Deutsch
Katalognummer
v109556
Note
Unter Wind
Schlagworte
Socket-Programmierung

Autor

Teilen

Zurück

Titel: Socket-Programmierung