C#3.5-ネットワークを介した名前付きパイプの接続
-
04-07-2019 - |
質問
ネットワークを介して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アダプターは、同じコンピューター"
でのプロセス間通信を提供します他のヒント
NamedPipeServerStreamに権限を設定して、クライアントがパイプにアクセスする権限を持つようにする必要があります。
NamedPipeServerStreamのSetAccessControlメソッドを確認します。
System.Runtime.Remoting名前空間を調べます。 IIRC、名前付きパイプは、リモートチャネルで使用されるプロトコルのオプションの1つです。
所属していません StackOverflow