C # 3.5 - Подключение именованного канала через сеть - PullRequest
2 голосов
/ 28 октября 2008

Как правильно настроить именованный канал в C # по сети?

В настоящее время у меня есть две машины, «клиент» и «сервер».

Сервер настраивает свой канал следующим образом:

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

Клиент устанавливает соединение следующим образом:

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

Доступ к машине «сервер» в сети осуществляется через «\\ сервер».

Всякий раз, когда я запускаю программу, я получаю исключение System.UnauthorizedAccessException, которое говорит: «Доступ к пути запрещен». Код работает нормально, когда я запускаю сервер и клиент на локальном компьютере и пытаюсь подключиться к "." с клиентом.

Ответы [ 3 ]

4 голосов
/ 29 октября 2008

Вам необходимо установить разрешения для NamedPipeServerStream, чтобы у клиента были разрешения на доступ к каналу.

Я бы посмотрел на метод SetAccessControl вашего NamedPipeServerStream.

0 голосов
/ 22 июня 2009

Нельзя использовать именованные каналы между машинами.

"Адаптер WCF-NetNamedPipe обеспечивает межпроцессное взаимодействие на том же компьютере "

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

0 голосов
/ 28 октября 2008

Посмотрите в пространстве имен System.Runtime.Remoting. IIRC, именованные каналы являются одним из вариантов протокола, используемого удаленными каналами.

...