Можете ли вы объяснить более подробно, в чем разница между PIPE_READMODE_MESSAGE / PIPE_READMODE_BYTE?

Несмотря на то, что я просматривал документ здесь , мне все равно не имеет смысла, что это такое:

Данные читаются из трубы как ручей Есть ли разница между PIPE_READMODE_MESSAGE / PIPE_READMODE_BYTE? Хотя я пролистал здесь документ, он все равно не имеет смысла, что это: данные читаются из канала как поток сообщений. Этот режим можно использовать только в том случае, если PIPE_TYPE_MESSAGE имеет значение ...

Несмотря на то, что я просматривал документ здесь , мне все равно не имеет смысла, что это такое:

Данные читаются из трубы как ручей Есть ли разница между PIPE_READMODE_MESSAGE / PIPE_READMODE_BYTE? Хотя я пролистал здесь документ, он все равно не имеет смысла, что это: данные читаются из канала как поток сообщений. Этот режим можно использовать только в том случае, если PIPE_TYPE_MESSAGE имеет значение ...

Несмотря на то, что я просматривал документ здесь , мне все равно не имеет смысла, что это такое:

Данные читаются из трубы как ручей сообщений. Этот режим может быть только используется, если PIPE_TYPE_MESSAGE также

10
задан user198729 22 August 2010 в 02:51
поделиться

2 ответа

В режиме BYTE вы сами должны определить, как разделить данные, чтобы их можно было декодировать на принимающей стороне. В режиме MESSAGE API сделает это за вас. Когда вы прочитаете сообщение на другой стороне, у вас будет весь блок данных (сообщение).

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

EDIT: Документация указывает на очень четкий пример использования этого API клиентом/сервером и режима MESSAGE между ними.

http://msdn.microsoft.com/en-us/library/aa365592%28v=VS.85%29.aspx

http://msdn.microsoft.com/en-us/library/aa365588%28v=VS.85%29.aspx

5
ответ дан 4 December 2019 в 03:14
поделиться

Разница между режимами типа PIPE_TYPE_BYTE и PIPE_TYPE_MESSAGE объясняется на http://msdn.microsoft.com/en-us/library/aa365605.aspx:

Режим типа

Режим типа канала определяет, как данные записываются в именованный канал. Данные может передаваться через именованный pipe либо как поток байтов, либо как поток сообщений. Трубный сервер указывает тип канала при вызове CreateNamedPipe для создания экземпляра именованной трубы. Типовые режимы должны быть одинаковым для всех экземпляров трубка.

Чтобы создать канал байтового типа, укажите PIPE_TYPE_BYTE или используйте значение по умолчанию ценность. Данные записываются в канал как поток байтов, а система не делает различий между байты, записанные по-разному операции.

Чтобы создать канал сообщения, укажите PIPE_TYPE_MESSAGE. Система лечит байты, записанные при каждой записи операция в канал как сообщение Блок. Система всегда выполняет запись операции с каналами сообщений, как если бы был включен режим сквозной записи.

Если вы хотите записать поток данных в отношении каналов, вы должны использовать режим типа PIPE_TYPE_BYTE. Затем вы можете записать любые данные в конвейерный буфер относительно WriteFile и прочитать там на другой стороне относительно ReadFile. Как именно будут отправляться данные, для вас не важно. Данные некоторых операций WriteFile могут быть переданы как один блок данных.

Если вы используете режим типа PIPE_TYPE_MESSAGE, каждая операция записи следует за передачей данных, поскольку запись в канал будет интерпретироваться как отправка сообщения. Существует специальная функция TransactNamedPipe, которая позволяет вам писать сообщение и читать сообщение из указанного именованного канала в одну сетевую операцию.

1
ответ дан 4 December 2019 в 03:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: