2010-06-15 5 views

Répondre

8

Voici un morceau de code pour créer un nommé client pipe, il est soulevé d'une réponse à un previous question je répondu sur la communication entre C++ et C# en utilisant des canaux nommés

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(); 
    } 
    } 
} 
0

La façon la plus simple utilise WCF:

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

+0

est-ce un service WCF en utilisant un liaison de tuyau nommé fonctionne avec n'importe quelle application qui utilise des tuyaux nommés? Que faire si j'ai une application héritée qui les utilise? J'essaie de comprendre si c'est seulement WCF-WCF qui est possible dans ce scénario. – jlafay

+0

Cela dépend! L'implémentation actuelle des canaux nommés ne leur permet pas d'être utilisés sur le réseau. De plus, si vous voulez les utiliser pour communiquer avec une application existante, vous devrez probablement implémenter le protocole qui est en tête de vous-même, WCF ne le saura pas. Dans ce cas, il serait plus facile d'utiliser certaines des méthodes de niveau inférieur, par ex. win32 (voir http://www.switchonthecode.com/tutorials/interprocess-communication-using-named-pipes-in-csharp) ou http://stackoverflow.com/questions/244367/c-3-5-connecting- named-pipe-across-network. –

Questions connexes