1

我在命名管道的互联网上阅读了很多示例。由于某种原因,我无法使其工作。无论如何,这是我的代码:

服务器:

    static void Main(string[] args)
    {
        NamedPipeServerStream server = new NamedPipeServerStream("1234");
        server.WaitForConnection();

        Console.Beep(); // connection successful! 
    }

客户:

    static void Main(string[] args)
    {                    
        NamedPipeClientStream client = new NamedPipeClientStream("1234");
        client.Connect();

        Console.WriteLine("Connected!");
        Console.Read();
    }

我有两个不同的可执行文件。我先启动服务器程序,然后启动客户端。为什么我无法连接?

4

1 回答 1

2

一个可能的原因:您正在从 2 个不同的安全上下文启动进程(即一个“以管理员身份运行”,另一个以普通用户身份运行)。在这种情况下,如果不在命名管道上设置安全性,就无法建立连接......

也可能存在具有此名称的现有命名管道(以某种方式或在另一个用户下孤立),但我希望在这种情况下至少有一个程序会失败。考虑重新启动您的机器以防万一(或者更好地使用 Sysitnerals 工具之一来查看是否已经存在具有此名称的管道)。

于 2013-02-13T17:06:01.727 回答