Hallo,
ist jemand in der Lage, mir den Unterschied zwischen einer (named) pipe und einem socket zu erklären. Auf nicht programmiertechnischer Ebene ?
pipe vs. socket
Re: pipe vs. socket
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
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