【发布时间】:2023-04-02 16:55:01
【问题描述】:
我有一个内存区域,其中包含我想通过以太网发送到其他客户端的数据。为了提高吞吐量,目前我正在摆弄 sendfile API 而不是经典的发送/写入 API。但据我了解,sendfile API 需要一个文件描述符作为输入,但我所拥有的只是原始内存数据。那么我应该怎么做才能使用 sendfile API?
【问题讨论】:
-
创建文件?这个名字告诉你它的作用;如果您没有文件,
sendfile()不适用,是吗? -
我明白了,以前我认为有一种方法可以打开特定的内存区域并将文件描述符传递给 sendfile。那么在您看来,哪个更快? 1、mmap数据区域,然后使用send API重复读取内存,直到所有数据都发送完毕。 2.挂载一个ramdisk,利用内存中的数据创建一个raw文件,然后使用sendfile API发送过来。
-
好的;让我退后一步——周围有一些非常复杂的接口,
sendfile()可能就是其中之一。但是,根据名称,您需要一个先验文件。它不是 POSIX 标准函数;它是一个 Linux 扩展。
标签: c++ c linux sockets sendfile