web-dev-qa-db-ja.com

コマンドラインからUnix名前付きソケットを作成する

Mkfifoに似ているが、ドメインソケット用のコマンドはありますか?

32
benmmurphy

ソケットのmkfifoに完全に相当するものはありません。つまり、「ハングしている」ソケットを作成するだけのコマンドはありません。これは歴史的な理由によるものです。サーバーの関数bind()(ファイルシステムにソケット名/ inodeを作成する関数)は、名前がすでに使用されていると失敗します。つまり、サーバーは既存のソケットを操作できません。

したがって、以前にソケットを作成した場合は、とにかくサーバーによってソケットを削除する必要があります。メリットはありません。 Gregoryの答えを見るとわかるように、netcatなどのサーバーを保持している場合は、ソケットを作成できます。サーバーがなくなると、古いソケットはなくなります。新しいサーバーには新しいソケットがあり、ソケットの名前が同じであっても、すべてのクライアントは再接続する必要があります。

23
kubanczyk

最新のnetcat(nc)および同様のプログラム(私の知る限りではsocat)には、ドメインソケットオプションがあります。
それ以外の場合は、ucspi-unixを確認できます

16
Gregory MOUSSAT

あなたはpythonを使うことができます:

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

また、C、 この答え を参照してください。

10
akostadinov

私は単にnetcatを使用し、そのような場合でも聴き続けます。

nc -lkU aSocket.sock

netcat-openbsdを使用する必要があります。 netcat-traditionalには、Unixドメインソケット用の-Uスイッチがありません。

3
Karimai