Domanda

Qual è il modo corretto di impostare una pipe con nome in C # attraverso una rete?

Attualmente ho due macchine, "client" e "server".

Il server imposta la propria pipe nel modo seguente:

NamedPipeServerStream pipeServer = new NamedPipeServerStream(
    "pipe",
    PipeDirection.InOut,
    10,
    PipeTransmissionMode.Byte,
    PipeOptions.None)
pipeServer.WaitForConnection();
//... Read some data from the pipe

Il client imposta la connessione nel modo seguente:

NamedPipeClientStream pipeClient = new NamedPipeClientStream(
    "server",
    "pipe",
    PipeDirection.InOut);
pipeClient.Connect(); //This line throws an exception
//... Write some data to the pipe

È possibile accedere alla macchina "server" sulla rete andando su " \\ server " ;.

Ogni volta che eseguo il programma, ottengo un'eccezione System.UnauthorizedAccessException che dice " L'accesso al percorso è negato. " Il codice funziona correttamente quando eseguo il server e il client sul mio computer locale e provo a connettermi a ". & Quot; con il cliente.

È stato utile?

Soluzione

Non è possibile utilizzare pipe denominate tra macchine.

" L'adattatore WCF-NetNamedPipe fornisce comunicazioni tra processi sullo stesso computer "

http://msdn.microsoft.com/en-us/library /bb226493.aspx

Altri suggerimenti

È necessario impostare le autorizzazioni su NamedPipeServerStream in modo che il client disponga delle autorizzazioni per accedere alla pipe.

Vorrei esaminare il metodo SetAccessControl di NamedPipeServerStream.

Cerca nello spazio dei nomi System.Runtime.Remoting. IIRC, named pipe sono un'opzione per il protocollo utilizzato dai canali remoti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top