【问题标题】:How to create NAMED-PIPE in .NET-4?如何在 .NET-4 中创建 NAMED-PIPE?
【发布时间】:2010-06-15 12:56:30
【问题描述】:

如何在 C# 应用程序的 .NET-4 中创建 NAMED-PIPE?

【问题讨论】:

    标签: c# .net-4.0


    【解决方案1】:

    这是一段创建命名管道客户端的代码,它是从previous question 的答案中提取的,我在使用命名管道在 C++ 和 C# 之间进行通信时做出了回答

    using System; 
    using System.Text; 
    using System.IO; 
    using System.IO.Pipes; 
    
    namespace CSPipe 
    { 
      class Program 
      { 
        static void Main(string[] args) 
        { 
          NamedPipeClientStream pipe = new NamedPipeClientStream(".", "HyperPipe", PipeDirection.InOut); 
          pipe.Connect(); 
          using (StreamReader rdr = new StreamReader(pipe, Encoding.Unicode)) 
          { 
            System.Console.WriteLine(rdr.ReadToEnd()); 
          } 
    
          Console.ReadKey(); 
        } 
      } 
    }
    

    【讨论】:

      【解决方案2】:

      最简单的方法是使用 WCF:

      var binding = new System.ServiceModel.NetNamedPipeBinding(System.ServiceModel.NetNamedPipeSecurityMode.None)

      【讨论】:

      • 使用命名管道绑定的 WCF 服务是否可以与任何使用命名管道的应用程序一起使用?如果我有一个正在使用它们的遗留应用程序怎么办?我试图弄清楚在这种情况下是否只有 WCF-WCF 是可能的。
      • 视情况而定!命名管道的当前实现不允许它们在网络中使用。此外,如果您想使用它们与旧版应用程序进行通信,您可能需要自己实现位于顶部的协议,WCF 不会知道这一点。在这种情况下,使用一些较低级别的方法会更容易,例如win32(见switchonthecode.com/tutorials/…)或stackoverflow.com/questions/244367/…。
      猜你喜欢
      • 2011-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-06
      相关资源
      最近更新 更多