2016-01-10 8 views
5

Ich möchte Nachrichten von einem Unix-Domain-Socket lesen (SOCK_STREAM), aber ich habe Schwierigkeiten, ein funktionierendes Beispiel dafür in Elixir zu tun. Ich habe versucht, es mit der Proket-Bibliothek von Erlang funktionieren zu lassen, aber ich hatte nur Ärger.Unix-Domain-Sockets in Elixir

Kann mir jemand ein funktionierendes Beispiel des Lesens von einem Unix-Domain-Socket in Elixir zeigen?

+0

ich wissen Sie über Elixir Beispiele gefragt, aber hier ist ein Thread zu Nachrichten von Unix Domain Sockets in Erlang http://erlang.org/pipermail/erlang-questions/2009-March/042184 lesen. html. Ich nehme an, die Antwort wird wahrscheinlich auch in Elixir ein benutzerdefinierter Port sein. –

Antwort

3

Here ist ein schönes Beispiel, mit :procket.

open Funktionen erhalten ein Tupel von Dateideskriptoren {stdin, stdout} von einer Verbindungsadresse, entweder IPv4, IPv6 oder Unix-Domain-Socket.

EDIT: Es wird hier verwendet, um einen Port zu initialisieren, aber mitist es einfach zu lesen.

2

Es gibt keine Unterstützung für Unix Sockets in Vanille Erlang noch in Elixir.

Immer noch gibt es einige Lösungen, die als C-Erweiterungen zur Verfügung gestellt werden. Einer ist bereits erwähnt procket, andere ist afunix.

finde ich Beispiele in der afunix readme ziemlich unkompliziert und einfach zu hirn übersetzen zu Elixir (erinnere mich an die Vars und Verwendung Apostrophe ' statt Anführungszeichen "! In Kleinbuchstaben).

[EDIT]

Erlang-Projekt (solange es Rebar-ized, beide sind oben) können leicht zu Ihrem Mix Projekt hinzugefügt werden, indem auf deps die folgende Tupel Zugabe (schamlos afunix ohne Grund erwähnt die Förderung:):

{:afunix, github: "tonyrog/afunix"}