C#通过网络命名管道

时间:2012-02-09 16:51:09

标签: c#

我正在尝试创建一个需要通过网络进行通信的应用。我在这里关注命名管道的MSDN文档:http://msdn.microsoft.com/en-us/library/bb546085.aspx

我已经尝试过MSDN的代码,但没有运气。

我看到了“。”必须用客户端的网络名称替换,我做了。我尝试了网络名称和服务器PC名称,但都无法连接到服务器(我的笔记本电脑)。

现在我不知道该怎么做 - 有什么建议吗? (下面的代码让我“找不到网络路径”)

using System;
using System.IO;
using System.IO.Pipes;

class PipeClient
{
    static void Main(string[] args)
    {
        using (NamedPipeClientStream pipeClient =
            new NamedPipeClientStream("xxx.xxx.x.x", "testpipe", PipeDirection.InOut))
        {

            // Connect to the pipe or wait until the pipe is available.
            Console.Write("Attempting to connect to pipe...");
            pipeClient.Connect();

            Console.WriteLine("Connected to pipe.");
            Console.WriteLine("There are currently {0} pipe server instances open.",
               pipeClient.NumberOfServerInstances);
            using (StreamReader sr = new StreamReader(pipeClient))
            {
                // Display the read text to the console
                string temp;
                while ((temp = sr.ReadLine()) != null)
                {
                    Console.WriteLine("Received from server: {0}", temp);
                }
            }
        }
        Console.Write("Press Enter to continue...");
        Console.ReadLine();
    }
}

1 个答案:

答案 0 :(得分:3)

当您指定计算机名称,甚至是您自己的计算机名称时,它使用标准网络协议/堆栈等。

您可能需要打开防火墙端口。 TCP 445.此外,默认情况下,Windows允许所有传出通信。您应该只需要添加入站端口例外。您的配置可能会有所不同。 .NET 3.5 (C#) Named pipes over network