Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

it:socket [2010/09/25 12:35] (aktuell)
Zeile 1: Zeile 1:
 +[[:it|{{ :​xeon.png?​40|}}]]
 +===== Sockets =====
  
 +Die Socket-Schnittstelle dient als standardisierte Programmierschnittstelle zwischen dem Anwendungsprogramm und TCP/IP. Neben der rechnerübergreifenden Kommunikation von Prozessen über TCP/IP, wird sie auch zur lokalen Interprozesskommunikation genutzt.
 +
 +Die Socket-Schnittstelle kommt aus der UNIX-Welt. Mit dem 4.2BSD wurden die Sockets in UNIX eingeführt. Eine allgemein verfügbare Spezifikation,​ die auf den UNIX-Sockets basiert, wurde von der Firma Mircosoft unter der Bezeichnung WinSock in das WOSA aufgenommen und wurde damit ein etablierter Standard.
 +
 +Ein großer Vorteil der Verwendung von Sockets ist ihre Homogenität,​ d. h. eine Kommunikation über Sockets ist unabhängig von dem Standort der Prozesse, dem Betriebssystem,​ der Rechnerarchitektur und dem Übertragungsmedium. Der Aufbau einer TCP/IP Verbindung aus einem Anwenderprogramm wird durch die Verwendung von Sockets sehr einfach. Der Anwendungssoftware stehen die in Tabelle 1.1 gezeigten TCP-Systemaufrufe zur Verfügung.
 +
 +Zum Aufbau einer Verbindung werden vom Client und Server mit Hilfe des Funktionsaufrufes <fc #​008000>​socket()</​fc>​ eine Instanz der Socket-Schnittstelle erstellt und das Transportprotokoll festgelegt. Durch den Systemaufruf <fc #​008000>​bind()</​fc>​ legt der Server den lokalen Host und den lokalen Port fest. Damit ist die Adresse festgelegt, auf welcher der Server dem Client antwortet. Nach dem Aufruf der Funktionen <fc #​008000>​listen()</​fc>​ und <fc #​008000>​accept()</​fc>​ wartet der Server auf ein <fc #​008000>​connect()</​fc>​ des Clients. Der Client bekommt mit dem <fc #​008000>​connect()</​fc>​-Aufruf implizit eine lokale Adresse zugewiesen und übergibt sie dem Server. Die Verbindung ist nun aufgebaut und Client und Server können mit <fc #​008000>​read()</​fc>​- und <fc #​008000>​write()</​fc>​-Funktionen bidirektionalen,​ byteorientierten Datenaustausch betreiben. Durch den Systemaufruf <fc #​008000>​close()</​fc>​ wird die Verbindung abgebaut. Tabelle 1.1 vergleicht eine Socket-Verbindung zwecks Anschaulichkeit mit einem Telefongespräch. ​
 +\\ \\ 
 +^ Prozess 1 Server ^ Prozess 2 Client ^ Funktion ^ Analogie beim Telefonieren ^ 
 +| <fc #​008000>​socket()</​fc>​ | <fc #​008000>​socket()</​fc>​ |Socket erstellen | Telefonhörer abheben | 
 +| <fc #​008000>​bind()</​fc>​| | Adresse dem Socket zuweisen| Telefonnummern zuweisen | 
 +| <fc #​008000>​listen ()</​fc>​ | | Erlaubnis erteilen, mit dem Socket Verbindung aufzunehmen | Erlaubnis erteilen, angerufen zu werden | 
 +| | <fc #​008000>​connect()</​fc>​ |Verbindungswunsch mitteilen | Telefonnummer wählen | 
 +| <fc #​008000>​accept()</​fc>​ | | Verbindung komplett aufbauen | Anruf beantworten | 
 +| <fc #​008000>​write()</​fc>​ | <fc #​008000>​write()</​fc>​ | Daten über die Schnittstelle senden | Reden | 
 +| <fc #​008000>​read()</​fc>​ | <fc #​008000>​read()</​fc>​ | Daten empfangen | Zuhören | 
 +| <fc #​008000>​close()</​fc>​ | <fc #​008000>​close()</​fc>​ | Socket schließen | Auflegen | 
 +**Tabelle 1.1**
 +\\ \\ 
 + --- //pronto 2010/03/30 19:00//
 +{{keywords>​winsock netzwerk}}
it/socket.txt (8926 views) · Zuletzt geändert: 2010/09/25 12:35 (Externe Bearbeitung)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0