【发布时间】:2014-06-11 10:44:46
【问题描述】:
在 Linux 中,有没有办法从套接字读取,同时避免数据从内核空间到用户空间的隐式 memcpy?
也就是说,而不是做
ssize_t n = read(socket_fd, buffer, count);
这显然需要内核从网络缓冲区执行 memcpy 到我提供的缓冲区,我会做类似的事情
ssize_t n = fancy_read(socket_fd, &buffer, count);
返回时,缓冲区指向从网络接收到的非 memcpy() 数据。
【问题讨论】:
-
我不这么认为,使用
shmget -
@AlterMann shmget() 究竟是如何“从套接字读取”的?
-
EJP,当然是用共享内存代替了套接字的概念;)
-
@AlterMann 您可能认为这回答了有关从套接字读取的问题,但我没有。除非对等方共同驻留在同一主机中,否则它甚至都不会工作,这在问题中没有说明。他确实提到了 network 缓冲区。
-
EJP,你是对的,@op: 在同一个主机上?
标签: c++ c linux sockets networking