Winsock перекрывал ввод-вывод и разбор сообщений

Я должен реализовать (клиентский) сокет, который требует высокой пропускной способности (> 800 Мбит / с) и низкой задержки, работающей на сервере Windows 7. Перекрытый ввод-вывод, кажется, путь к высокой производительности.

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

Нет, мне интересно, каковы общие способы объединения этого с протоколом на основе пакетов (длина пакетов с разделителями, заголовок содержит размер блока данных)
Конечно, я могу просто прочитать произвольные порции данных и скопировать необходимое количество байтов в строку сообщения. Это означает дополнительное действие копирования.

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

Есть опыт или идеи, как сделать пакеты с разделителями длины наиболее эффективными?

Спасибо,

0

Решение

Проверять, выписываться разброс / сбор ввода / вывода если вы знаете размеры пакетов.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]