在Windows上的两个networking套接字之间pipe道数据

  1. 给定两个networking套接字,什么是最有效的方式来pipe理数据,而不以任何方式触摸内容?

  2. 有没有一种方法(系统调用API)来pipe理内核空间中的套接字到套接字的数据pipe道,就像在Linux上提供的接口一样 ? 这是我现在在Haskell中使用splice在Haskell中使用GNU / Linux系统调用`splice`来实现Zero-Copy Socket到Socket的数据传输 。

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