5

.NET アプリで名前付きパイプ サーバーを作成します。その名前は "TSPipe" です。次に、メモ帳を開き、ファイルを「\.\pipe\TSPipe」に保存しようとしました。次に、メモ帳がそのパイプに書き込んだ内容を読み取れるようにしたいと考えています。

NamedPipeServerStream を処理するスレッドの一般的なロジックはまだ作成中ですが、名前付きパイプ サーバーのコードは次のとおりです。

    public void PipeThread() {
        var sid = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
        var rule = new PipeAccessRule(sid, PipeAccessRights.ReadWrite, AccessControlType.Allow);
        var sec = new PipeSecurity();

        sec.AddAccessRule(rule);

        while (continuePipeThread) {
            pipeStream = new NamedPipeServerStream("TSPipe", PipeDirection.In, 100, PipeTransmissionMode.Byte, PipeOptions.None, 0, 0, sec);

            Program.Output.PrintLine("Waiting for connection...");

            pipeStream.WaitForConnection();

            Program.Output.PrintLine("Connected, reading...");

            byte[] data = new byte[1024];
            int lenRead = 0;
            lenRead = pipeStream.Read(data, 0, data.Length);
            string line = System.Text.Encoding.ASCII.GetString(data, 0, lenRead);

            Program.Output.PrintLine(line);

            pipeStream.Close();
            pipeStream.Dispose();
        }
    }

ご協力いただきありがとうございます。何か提案があればお知らせします。

4

1 に答える 1

4

メモ帳から名前付きパイプに書き込むことはできません。コードを使用して、メモ帳に書き込もうと\\\\.\pipe\TSPipeすると、UNCパスに自動修正されます\\\\pipe\TSPipe。他のいくつかのアプリケーションを試しましたが、どちらも機能しませんでした。入力した名前をに渡す以外のロジックを実行しているようCreateFileです。

ただし、のようなものを実行するecho Hello, Word! > \\\\.\pipe\TSPipeと、テキストHello, World!がパイプサーバーに送信されます。

したがって、「Windowsでは、名前付きパイプをファイルとして使用できますか?」という質問に対する答えを推測します。時々です。

于 2012-06-08T04:53:36.727 に答える