Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Именованные каналы: сервер C#, клиент C++

Автор вопроса: yaronklОтветов: 1

Я написал 2 пары клиент-серверных программ с именованными каналами: 1-я пара на C# (.NET 4) 2-я пара на C++ (неуправляемая)

Все 4 тестовые программы используют одно и то же имя канала \\.\pipe\mypipe

Пара С# отлично работает друг с другом - я отправляю сообщение от клиента, и оно принимается сервером. Пара С++ также отлично работает друг с другом.

Но... когда я пытаюсь запустить клиент С# с сервером С++ или клиент С++ с сервером С#, это не работает. Клиент не может подключиться к серверу.

Есть ли что-то, что мешает клиенту C++ работать с сервером .NET? Должно ли это работать?

Спасибо.

  • Если вы отправляете двоичные данные, вы уверены, что двоичный формат совпадает между двумя реализациями? crashmstr 16.02.2016
  • Проблема перед отправкой данных. Проблема в том, что открытие канала на стороне клиента не удается. yaronkl 16.02.2016
  • Как это не удается? Вы получаете исключение, приложение зависает? thorkia 16.02.2016
  • Вот как клиент открывает канал: ‹pre› hPipe=CreateFile(\\\\.\\pipe\\mypipe, GENERIC_WRITE,//GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL) ; если (hPipe!=INVALID_HANDLE_VALUE) { вернуть 0; //Успех!!! } ошибка = GetLastError(); if(err!=ERROR_PIPE_BUSY) { printf(Не удалось открыть канал, GetLastError=%u\n, ошибка); возврат -1 ; } ‹/pre› Создать файл возвращает недопустимый дескриптор. GetLastError() возвращает 2. yaronkl 17.02.2016
  • Что такое значение имени канала С#? Это мой пайп? alexm 17.02.2016
  • Это \\\\.\\pipe\\mypipe yaronkl 17.02.2016

c++named-pipes

Ответы

Ответ 1 · рейтинг 7 · alexm

NamedPipeClientStream и NamedPipeServerStream добавляют префикс "\\.\pipe\" к имени автоматически.

Код клиента С++:

hPipe = CreateFile("\\\\.\\pipe\\mypipe", ...)

соответствующий код сервера С#:

var pipe = new NamedPipeServerStream("mypipe", ...)

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы