sendto(), und Unix Domain Sockets

Antworten
Nachricht
Autor
ElBlues
Beiträge: 127
Registriert: 25. Mär 2008 12:50
Kontaktdaten:

sendto(), und Unix Domain Sockets

#1 Beitrag von ElBlues » 27. Apr 2011 10:04

Hi,

ich bin hier in einem Programm auf etwas gestoßen, was ihc uzmindest merkwürdig finde.

Es werden zwei Unix Domain Sockets /tmp/sock1 und /tmp/sock2 angelegt, über welche Threads miteinander kommunizieren. An diese Sockets werden dann per sendto() irgend welcher Daten geschickt.

Was ich daran dubios finde: für den ersten Parameter in send() wird ein und der selbe Socket verwendet.

Ist sowas zulässig oder sollte ich nicht zwei separate Sockets für die beiden unterschiedlichen Sendekanäle haben?
http://www.kaufkauf.net - nie wieder Einkäufe vergessen!

Benutzeravatar
Janka
Beiträge: 3581
Registriert: 11. Feb 2006 19:10

#2 Beitrag von Janka » 27. Apr 2011 13:14

Kein Ahnung was du da machst,. aber Sockets sind im Gegensatz zu Named Pipes grundsätzlich bidirektional und vollduplexfähig. Um zwei Prozesse miteinander kommunizieren zu lassen braucht man also immer nur einen einzelnen Socket.

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

ElBlues
Beiträge: 127
Registriert: 25. Mär 2008 12:50
Kontaktdaten:

#3 Beitrag von ElBlues » 27. Apr 2011 13:25

Nicht mein Code, ich wäre auf so eine Idee nicht gekommen :-)

In diesem Beispiel sind ja drei Prozesse im Spiel: der Sender, welcher _einen_ Socket benutzt um die Daten per sendto() mal an den einen und mal an den anderen Empfänger zu schicken. Ich persönlich hätte für jede der beiden Senderichtungen jetzt ja einen separaten Socket angelegt. Allerdings frage ich mich an inabetracht dieses seltsamen Konstruktes, ob diese Socket-Sparerei jetzt wirklich zulässig oder einfach nur Müll ist.
http://www.kaufkauf.net - nie wieder Einkäufe vergessen!

Benutzeravatar
Janka
Beiträge: 3581
Registriert: 11. Feb 2006 19:10

#4 Beitrag von Janka » 27. Apr 2011 20:10

Je einen Socket pro Senderichtung zu haben ist Müll.

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

Antworten