我有一个内存区域,其中包含我想通过以太网发送到另一个客户端的数据。为了增加吞吐量,目前我在摆弄sendfile API而不是传统的发送/写入API。但据我所知,sendfile API需要输入文件描述符,但我所拥有的只是原始内存数据。那么为了使用sendfile API我该怎么做?发送文件没有文件描述符
1
A
回答
3
的sendfile()
的主要好处是,它允许你避免不必首先read()
数据从一个文件描述符到内存中,然后才能send()
它的开销。如果要发送的数据已经在内存中,则不需要sendfile()
。使用奇怪的解决方法将数据移动到文件中(如mmap()
)只会降低性能。
-1
相关问题
- 1. 文件描述符饥饿和阻断文件描述符
- 2. 创建GNU C文件描述符没有文件句柄
- 3. EXEC没有发现(因为文件描述符)
- 4. 坏文件描述符文件无
- 5. 文件描述符和打开文件
- 6. c strcpy文件描述符
- 7. webservice描述符文件
- 8. 关闭文件描述符
- 9. 创建文件描述符
- 10. Linux open()文件描述符
- 11. 实现文件描述符
- 12. 文件描述符轮询
- 13. 写作文件描述符
- 14. 没有单独的描述符XML文件的Maven Assembly插件
- 15. 如何使用sdbus发送Unix文件描述符?
- 16. Sendmsg在发送文件描述符时不起作用
- 17. 文件描述符和套接字文件描述符之间的区别
- 18. 等待可读文件描述符和可写文件描述符
- 19. 有没有办法从gzFile获取文件描述符
- 20. SOCKET文件描述
- 21. 套接字描述符与文件描述符
- 22. 设备文件的文件描述符的有效性
- 23. 文件描述符和文件指针有什么区别?
- 24. 没有得到输出的printf文件描述符ç
- 25. 解决文件描述符文件名/文件路径
- 26. uWSGI [+ nginx]文件描述符错误(没有这样的文件或目录)
- 27. 使用Dropbox API上传没有文件描述符的文件块
- 28. 确定文件结构(描述文件描述符)是否为'特殊文件'(即块/字符设备)
- 29. 错误的文件描述符
- 30. C从文件描述符中读取
创建一个文件?这个名字告诉你它做了什么;如果你没有文件,'sendfile()'不适用,是吗? – 2014-09-03 02:49:48
我看,以前我认为有一种方法可以打开特定的内存区域并将文件描述符传递给sendfile。那么你认为哪一个更快? 1. mmap数据区域,然后使用发送API重复读取内存,直到发送所有数据。 2.安装ramdisk,使用内存中的数据创建原始文件,然后使用sendfile API发送。 – czteoh 2014-09-03 03:29:24
好的;让我退后一步 - 周围有一些非常复杂的接口,'sendfile()'可能就是其中之一。但是,先验,并根据名称,你需要一个文件。它不是POSIX标准功能;它是一个Linux扩展。 – 2014-09-03 03:39:37