pipe vs. socket

Post Reply
Message
Author
lotte

pipe vs. socket

#1 Post by lotte »

Hallo,

ist jemand in der Lage, mir den Unterschied zwischen einer (named) pipe und einem socket zu erklären. Auf nicht programmiertechnischer Ebene ?

Andreas B.

Re: pipe vs. socket

#2 Post by Andreas B. »

ok, aber ob`s Dir hilft.

eine "pipe" ist
- halfdupplex
- Kommunikation nur fuer verwandte Prozessen moeglich z.B. Eltern/Kind
- zum Pipehandling wird popen()/pclose()/pipe() eingesetzt
mit fork() initiert man einen Kindprozess

eine named-"pipe" / Fifo ist
- halfdupplex
- ein eigener Dateityp
- es werden open()/read()/write()/unlink()/close() zur Behandlung benutzt,
somit die elementaren Dateioperationen

ein "Berkley"-Socket ist
- FullDupplex
- Abstraktion des Netzwerkverkehrs/Prinzieps auf Dateiebene
- von mehreren Prozessen gleichzeitig nutzbar, es kann Client- und Serverprozesse geben
Kommunikation kann als Verbindung ablaufen, oder via DataGrammen
(verbinde es analog mit dem Wort TeleGramm),
- Server koennen ankommende Daten "iterativ/fortschreitend" behandeln, d.h.
sie nehmen einen Auftrag an, arbeiten Ihn ab und senden die Ergebnisse, bevor der naechste
Auftrag abgearbeitet wird.
- Sie koennen aber auch konkurrierend arbeiten, d.h. fuer jeden einkommenden aktzeptierten
Auftrag erzeugt der Prozess von sich selbst eine Kopie und fuehrt diese als Kindprozess aus,
- Prozesse werden ueber Ihre Namen addressiert, d.h. nicht ueber Deskriptoren, diese Namen
muessen einen Hostnamen enthalten, z.B. der "localhost"

-- zu DataGrammen und Verbindungen,
iterative Server werden DataGramm orientierte Verbindungen bevorzugen
(kurz gesagt der Programmierer)
konkurrierende Server setzen meistens verbindungsorientierte Protokolle ein

z.B. eine Halflife/CS | Quake X -- Client/Serververbindung wird via UDP abgewickelt,
die meisten Spiele setzen auf Grund, moeglicher Packetverluste auf das UDP,
eine ssl Verbindung z.B. ist auf Grund Ihres Characters, fuer jedes Packet eine
"sicher angekommen" oder "versumpft" Bestaetigung (der Erhalt wird quitiert)
tcp- ist Volldupplex

-- Zur Kommunkation von zwei Prozessen muessen also 5 Paramter angegeben werden,
a. erforderliches Protokoll
b. der eigene Hostname
c. der eigene Prozessname
d. der Hostname des Partners
e. der Name des Partners
auch bei lokalen Verbindungen


hoffe das war nicht zu programmiertechnisch :D

Post Reply