2012-02-15 6 views
0

UNIXソケットをIPCメカニズムとして使用して、複数のクライアントプロセスが接続しているサーバープロセスを考えてみましょう。UNIXソケット:クライアントは別のクライアント向けのデータを読み取ることができますか?

各クライアントコードは無限ループで動作し、ソケットとの間でデータの読み書きを試みます。

私の質問:クライアントは、他のプロセスによって読み取られるデータを読み取っていないことをどのように知っていますか?サーバープロセスはデータを1つのソケットに書き込んでいます。

TCP/IPの場合、ソケットはタプル<remote host, remote port, local host, local port, protocol>を意味するので、サーバーにアクセスしようとしている別のマシンから実行されるプロセスは互いのデータを読み取ることができません。

しかし、UNIXソケットの場合、それは単なるファイルですか?または私は何かを逃していますか?

+0

コードを追加できますか? – tafoo85

+0

@ tafoo85:これは、複数のクライアントプロセスが接続しているUNIXサーバプロセスの単なる一般的なケースです。 IPCスキームはファイルにマッピングされるUNIXドメインソケットなので、私の質問は、サーバが常に同じソケットにデータを書き込んでいるので、クライアントが何らかのデータがあるかどうかを知る方法です。 – Fanatic23

+0

私はいくつかのコードを参照することができますそれは通常説明に役立ちます。それで全部です。 – tafoo85

答えて

1
  • 各クライアントには独自のソケットがあります。明らかに、別のクライアントに送信されたデータは読み込まれません。
  • UNIXソケットはではありません。ファイルはですが、多くの機能にファイルAPI呼び出しでアクセスできます。
+0

+1。あなたは、サーバーがUNIXソケットをどのように解釈するか、または内部について何か詳細に議論する何かを見つけることができるリンクを教えてください。 – Fanatic23

+0

古いunixのadagiumは: "すべてがファイルです"。すべてのファイルが同じではありません(たとえば、ttyをシークできません)が、open()read()write()はほとんどのファイル/ inodeで実装されています。 Listen()とbind()はソケット記述子に実装されていますが、ディスクファイルには実装されていません。 – wildplasser

+0

私は同じことを言ったと思います。 *ファイルのように見えます。しかし、そうではありません。 –

関連する問題