Frage Erstellen Sie Unix Benannte Socket von der Befehlszeile


Gibt es einen ähnlichen Befehl wie mkfifo, aber für Domain-Sockets?


26
2018-02-10 17:01


Ursprung




Antworten:


Es gibt kein exaktes Äquivalent von mkfifo für Socket, d. H. Es gibt keinen Befehl, der nur einen "hängenden" Socket erzeugt. Dies ist aus historischen Gründen: Die Funktion bind () des Servers, die einen Socket-Namen / Inode im Dateisystem erzeugt, schlägt fehl, wenn der Name bereits verwendet wird. Mit anderen Worten, der Server kann nicht an einem bereits vorhandenen Socket arbeiten.

Wenn Sie also den Socket früher erstellt hätten, müsste er zuerst vom Server entfernt werden. Kein Vorteil. Wie Sie mit Gregorys Antwort sehen, können Sie einen Socket erstellen, wenn Sie einen Server dafür halten, wie zum Beispiel netcat. Sobald ein Server weg ist, ist der alte Socket verschwunden. Ein neuer Server hat einen neuen Socket, und alle Clients müssen sich neu verbinden, obwohl der Name des Sockets identisch ist.


19
2018-02-10 22:28





Die neuesten netcat (nc) und ähnliche Programme (soweit ich weiß) haben Domain-Socket-Optionen.
Sonst können Sie sich UCPI-Unix ansehen


13
2018-02-10 18:03



+1 für nc auf BSD. - Clint Pachl
Unter Debian: # sudo apt-get install netcat-openbsd - Koutheir Attouchi
ok, sobald du das installierst, wie erstellt man eine "Socket-Datei" - Alexander Mills


Sie können Python verwenden:

python -c "import socket as s; sock = s.socket(s.AF_UNIX); sock.bind('/tmp/test.sock')"

Auch C, siehe diese Antwort.


1
2018-05-31 08:44