Sendfile без файлового дескриптора

У меня есть область памяти, которая содержит данные, которые я хотел бы отправить через Ethernet другому клиенту. Чтобы увеличить пропускную способность, в настоящее время я использую API sendfile вместо классического API send / write. Но, насколько я понимаю, API sendfile требует файловый дескриптор для ввода, но у меня есть только необработанные данные памяти. Итак, что я должен сделать, чтобы использовать API sendfile?

1

Решение

Основное преимущество sendfile() является то, что это позволяет избежать накладных расходов, связанных с первым read() данные из файлового дескриптора в память, прежде чем вы сможете send() Это. Если данные, которые вы хотите отправить, уже находятся в памяти, sendfile() не нужен Использование странных обходных путей для перемещения данных в файл (например, mmap()Это только снизит производительность.

3

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

Если вы работаете в Linux, вы можете посмотреть на сплайс

-1

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