C # 3.5 - Подключение именованного канала через сеть

StackOverflow https://stackoverflow.com/questions/244367

Вопрос

Как правильно настроить именованный канал в 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

«Серверный» компьютер может быть доступен в сети, перейдя по ссылке «\\ server».

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top