Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Именованные каналы. Передача сообщений - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как "выдрать" значение переменной из цикла http://www.cyberforum.ru/cpp-beginners/thread941226.html
В общем. Есть глобальная переменная. Есть цикл в одной из функций, где значение этой переменной с каждым проходом изменяется. Нужно сохранить значение переменной после последнего прохода цикла. Я...
C++ Поменять порядок расположения чисел в последовательности на обратный Даны целые числа а1,...,an. Поменять порядок расположения чисел в последовательности на обратный. http://www.cyberforum.ru/cpp-beginners/thread941209.html
C++ Новый поток внутри класса
Всем привет, решил попытаться оседлать многопоточность. Но увы тут же наткнулся на полное отсутствие информации. Серьёзно, на любом посещённом мною ресурсе описывается либо теоретическая часть...
Смещение в массиве данных C++
Я просмотрел все примеры в операции с массивами,но такого не нашёл. Мне приходит массив например 1222,и мне надо сделать преобразование, например единицы, из 16 ричной системы в обычную, как отсечь...
C++ Объяснить задание http://www.cyberforum.ru/cpp-beginners/thread941182.html
как понять: "The program should be capable of accepting a multi-line input"
C++ С чего начать? Всем привет! Вводная. Мы тут с товарищем решили замутить небольшой проект на С++. Роли распределили так: он - программист, я - организатор :). Оба в С++ ни в зуб ногой, то есть вообще ноль без... подробнее

Показать сообщение отдельно
Russian_Dragon
10 / 11 / 0
Регистрация: 18.02.2012
Сообщений: 140

Именованные каналы. Передача сообщений - C++

21.08.2013, 14:20. Просмотров 471. Ответов 0
Метки (Все метки)

Приветствую народ.
Есть такая вот проблемка.
Создаю я именованный канал в режиме передачи сообщений на С++
C++
1
2
this->pipeServer = CreateNamedPipe("\\\\.\\pipe\\BridgeAnalyst", PIPE_ACCESS_DUPLEX, PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT, 1, 100, 100, NMPWAIT_WAIT_FOREVER, NULL);
BOOL isConnected = ConnectNamedPipe(this->pipeServer, NULL);
Подключаюсь к нему с другого приложения на С#
C#
1
2
3
PipeClient = new NamedPipeClientStream(".", "BridgeAnalyst", PipeDirection.InOut);
PipeClient.Connect();
PipeClient.ReadMode = PipeTransmissionMode.Message;
И всё вроде хорошо, байты бегут. Но мне нужна передача не байтами, а сообщениями.
Но почему-то в упор не получается.
Как передавать через канал не отдельные байты, а сообщения?


П.с.
Для теста решил проверить информацию об уже созданном канале
C++
1
2
3
4
5
6
LPDWORD lpFlags = new DWORD();         
        LPDWORD lpOutBufferSize = new DWORD();
        LPDWORD lpInBufferSize = new DWORD();
        LPDWORD lpMaxInstances = new DWORD();
 
        GetNamedPipeInfo(this->pipeServer, lpFlags, lpOutBufferSize, lpInBufferSize, lpMaxInstances);
Получилось, что во флагах, у меня проставлено не
PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT
а вот что
PIPE_TYPE_MESSAGE | PIPE_NOWAIT
Теперь я вообще не понимаю - что я не так делаю?

Помогите, разобраться, пожалуйста, а то байтами вообще не удобно читать информацию.

Добавлено через 8 минут
А, понял, проблему.
Изначально посылался один 0 бит, на котором я и психологически зациклился.
А после уже идет нужный пакет[сообщение] с отправляемой информацией.
Извиняюсь за новую тему.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru