問題タブ [unix-socket]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - UNIXドメインソケットVS名前付きパイプ?
ソケットという名前のUNIXを見た後、それらは名前付きパイプだと思いました。名前パイプを調べましたが、大きな違いは見られませんでした。私はそれらが異なって初期化されているのを見ましたが、それが私が気付く唯一のことです。どちらもCの書き込み/読み取り機能を使用し、AFAIKと同様に機能します。
UNIXドメインソケットと名前付きパイプの違いは何ですか? どちらか一方を選ぶのはいつですか?デフォルトでどちらを使用する必要がありますか (必要に応じて、deque、list、またはその他のものを使用するよりも、C++ でデフォルトでベクターを使用する方法のように)?
linux - Unix ドメイン ソケットは複数のクライアントをどのように区別しますか?
TCP には、あるクライアントを別のクライアントに伝えるためのタプル ペア (IP アドレス/ポート/タイプ) があります。UDP はクライアント IP とポートを渡します。UNIX ドメインはどのようにしてさまざまなクライアントを追跡しますか?
つまり、サーバーは /tmp/socket などのパスにバインドされたソケットを作成します。2 つ以上のクライアントが /tmp/socket に接続します。client1 と client2 からのデータを追跡するために何が行われているのでしょうか? ネットワーク スタックはドメイン ソケットでは何の役割も果たさないと思いますが、カーネルがここですべての作業を行っているのでしょうか?
IP プロトコル形式や TCP/UDP 形式のような UNIX ドメイン プロトコル形式はありますか? ドメイン ソケット データグラム プロトコルの形式はどこかで公開されていますか? すべての UNIX は異なるのですか、それとも POSIX のようなものが標準化していますか?
イルミネーションをありがとう。これを説明する情報は見つかりませんでした。すべての情報源は、ドメイン ソケットの使用方法について説明しているだけです。
ruby-on-rails - RailsとRubyEventMachineプロセス間の通信
EventMachineを実行しているローカルの実行中のプロセスからデータを要求する必要があるRailsアプリがあります。この要求/応答を実装するための最良の方法は何ですか?
php - socket_read() の $type パラメータの意味
PHP ソケットを使用して、ac# アプリから PHP 5.3 スクリプトへの tcp/ip ソケット接続を作成しようとしています。C# アプリは、JSON 文字列を PHP スクリプトに送信する必要があります。
socket_read マニュアルに関する私の質問: 彼らはどういう意味ですか:
PHP_BINARY_READ とは正確には何ですか? また、このパラメーターを使用するときに recv() 関数を使用する必要があるのはなぜですか?
どんな助けでも大歓迎です。
linux - UNIXソケット接続のもう一方の端のuidを取得する方法はありますか
UNIXドメインソケットリスナーが特定のユーザーからの接続のみを受け入れる方法はありますか(chmod
/chown
は抽象的なソケットでは機能しません)、つまり、着信接続のuidを取得します(Linuxの場合)?
Linux で抽象 UNIX ソケットをGetConnectionUnixUser
使用する Dbus には、polkit が呼び出し元を判別するために使用する関数があります。だから私はdbus-daemon
それを行う方法が必要だと思います。それがどのように機能するか知っている人はいますか?
npapi - Unix ドメインソケットと NPAPI
Unix ドメイン ソケットを NPAPI 経由で Google Chrome の拡張機能に公開するためのソース コードまたはライブラリを探しています。
類似または関連するものはすでに存在しますか?
linux - SO_PEERCREDとSCM_CREDENTIALS-なぜ両方があるのですか?
SO_PEERCREDは、接続されたAF_UNIXストリームソケットのpid / uid / gidを取得する簡単な方法です。SCM_CREDENTIALSはほぼ同じですが、より複雑です(さまざまな補助メッセージ)。両方の方法を示す例へのリンク。
- 多かれ少なかれ同じ情報を取得する2つの方法があるのはなぜですか?
- より快適なSO_PEERCREDがunix(7)のマンページにリストされていないのはなぜですか?
- 実際のアプリケーションでより多く使用されるのはどれですか?
何を使うべきですか?
python - ツイストソケットの所有権
のソケットをリッスンするデーモンがあります/var/run
。私はinitスクリプト(明らかにrootとして)を使用してデーモンを起動し、twistd
--uid
and--gid
オプションを使用して特権のないユーザーに特権をドロップしています。ただし、ソケットはまだ。によって所有されていroot:root
ます。
同じ非特権ユーザーとして実行される2番目のデーモンは、ソケットにアクセスできる必要があります。ソケットの所有権をdaemon:daemon
initスクリプトで変更しましたが、これは非常に洗練されたソリューションとは言えません。
daemon:daemon
ファイル内でソケットを所有する方法はありtac
ますか?
c - Unix ドメイン ソケット (C) - クライアントは connect() でソケットを「削除」しますか?
これを簡潔に列挙するのは少し難しいかもしれませんが、ドメインと問題の初心者の理解に最善を尽くします。
最初にリンクを解除し、ソケット記述子を作成し、バインドし、リッスンし、ローカル UNIX ソケットで受け入れるストリーム サーバーの 2 つのプロセスがあります。サーバーの仕事は、接続を受け入れ、任意のデータを送信し、任意のデータを受信することです。クライアント プロセスの仕事は、初期設定を除いてサーバーと同じことをすることです。ソケット記述子を作成し、UNIX ソケットに接続します。
サーバーを起動すると、UNIX ソケットが作成されていることを確認できます。クライアントを起動するconnect()
と、ファイルまたはディレクトリが存在しないか無効であることを示すエラーが表示されます。そして、はい、以前のようにUNIXソケットを見つけようとすると、ファイルはもう存在しません...
この動作を引き起こしているバグの理由や場所を知っている人はいますか?
コード スニペットが明確にするのに役立つ場合は、それらも投稿できます。
UNIX ドメイン専用のにデータgetaddrinfo
を入力するために、 の修正版を使用していることにも注意してください。addrinfo struct
java - Unix ドメイン ソケットでパイプが壊れる理由は何ですか?
リクエストを受信し、Unix ドメイン ソケットで転送するサーバー アプリケーションがあります。これは妥当な使用法の下では完全に機能しますが、数千のリクエストでいくつかの負荷テストを行っていると、Broken Pipe エラーが発生します。
リクエストを送信するために、 junixsocketでJava 7 を使用しています。多くの同時リクエストがありますが、UNIX ドメイン ソケットに書き込みを行う 20 個のワーカーのスレッド プールがあるため、同時オープン接続が多すぎるという問題はありません。
要求ごとに、Unix Domain Socket との接続を開き、送信し、閉じます。
Unix ドメイン ソケットでパイプが壊れる原因は何ですか?
アップデート:
必要に応じてコード サンプルを配置します。
私は20個のワーカーのスレッドプールを持っており、それらは上記を同時に実行しており(同じUnixドメインソケットへの最大20個の同時接続)、それぞれが開いたり、送信したり、閉じたりしています。これは、10,000 リクエストのバーストの負荷テストでは問題なく動作しますが、さらに数千リクエストを送信すると、突然このエラーが発生するため、OS の制限によるものではないかと考えています。
これはネットワーク TCP ソケットではなく、Unix ドメイン ソケットであることに注意してください。