Page 1 of 1

sendto(), und Unix Domain Sockets

Posted: 27. Apr 2011 10:04
by ElBlues
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?

Posted: 27. Apr 2011 13:14
by Janka
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

Posted: 27. Apr 2011 13:25
by ElBlues
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.

Posted: 27. Apr 2011 20:10
by Janka
Je einen Socket pro Senderichtung zu haben ist Müll.

Janka