windows - Windows 上两个网络套接字之间的管道数据

标签 windows sockets haskell network-programming

  1. 给定两个网络套接字,在不以任何方式接触内容的情况下将数据从一个传输到另一个的最有效方法是什么?

  2. 有没有一种方法(系统调用 API)可以在内核空间中管理套接字到套接字的数据管道,类似于 splice provides on Linux ? 这就是我目前在 Haskell 中使用 splice 的方式:Using GNU/Linux system call `splice` for zero-copy Socket to Socket data transfers in Haskell .

最佳答案

Windows 上的零拷贝 API 称为 TransmitFile。它读取一个文件句柄并写入一个套接字——它通常用于从 Web 服务器提供静态文件。我认为您可以提供一个套接字句柄作为文件句柄,因为您通常可以这样做,即使在 Windows 上也是如此。如果是这样,那应该可以解决您的问题。我不确定,因为我没有尝试过,而且文档在这一点上没有明确说明。不过,它是 零拷贝 API,所以如果它不起作用,呃,它肯定应该这样做。

关于windows - Windows 上两个网络套接字之间的管道数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10087945/

相关文章:

java - Windows 2008 服务上的 java 服务的 Tmp 问题

c++ - 将 USB 数据重定向到以太网/TCP/IP 端口

Haskell/repa - 有没有办法漂亮地打印矩阵?

haskell - 为什么>>=比<=<更常被讨论?

不能用宏包装 cgo 标志

c++ - 窗口界面而不是 c 中的控制台

windows - 在 Windows 10 PC 上的 iOS 13+ 上调试 Safari

c++ - ZeroMQ 是否有数据到达时的通知/回调事件/消息?

javascript - Java套接字io未知传输未定义

haskell - 我可以通过应用仿函数的组合来模拟短路失败的成功列表吗?