2

ネットワークを介してC#で名前付きパイプをセットアップする正しい方法は何ですか?

現在、「クライアント」と「サーバー」の 2 台のマシンがあります。

サーバーは、次の方法でパイプをセットアップします。

NamedPipeServerStream pipeServer = new NamedPipeServerStream(
    "pipe",
    PipeDirection.InOut,
    10,
    PipeTransmissionMode.Byte,
    PipeOptions.None)
pipeServer.WaitForConnection();
//... Read some data from the pipe

クライアントは、次の方法で接続をセットアップします。

NamedPipeClientStream pipeClient = new NamedPipeClientStream(
    "server",
    "pipe",
    PipeDirection.InOut);
pipeClient.Connect(); //This line throws an exception
//... Write some data to the pipe

「\\server」に移動することで、「サーバー」マシンにネットワーク上でアクセスできます。

プログラムを実行するたびに、「パスへのアクセスが拒否されました」という System.UnauthorizedAccessException が発生します。ローカル マシンでサーバーとクライアントを実行し、「.」に接続しようとすると、コードは正常に動作します。クライアントと。

4

3 に答える 3

4

クライアントがパイプにアクセスするためのアクセス許可を持つように、NamedPipeServerStream にアクセス許可を設定する必要があります。

NamedPipeServerStream の SetAccessControl メソッドを見てみましょう。

于 2008-10-29T10:56:09.437 に答える
0

System.Runtime.Remoting 名前空間を調べます。IIRC、名前付きパイプは、リモート チャネルで使用されるプロトコルの 1 つのオプションです。

于 2008-10-28T18:49:30.747 に答える
-5

マシン間で名前付きパイプを使用することはできません。

"WCF-NetNamedPipe アダプターは、同じコンピューター上でクロスプロセス通信を提供します"

http://msdn.microsoft.com/en-us/library/bb226493.aspx

于 2009-06-22T06:59:08.380 に答える