質問

ネットワークを介して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

「サーバー」マシンには、「\\サーバー」にアクセスしてネットワーク上でアクセスできます。

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

役に立ちましたか?

解決

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

" WCF-NetNamedPipeアダプターは、同じコンピューター"

でのプロセス間通信を提供します

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

他のヒント

NamedPipeServerStreamに権限を設定して、クライアントがパイプにアクセスする権限を持つようにする必要があります。

NamedPipeServerStreamのSetAccessControlメソッドを確認します。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top