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

时间:2012-04-10 11:34:10

标签: 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

1 个答案:

答案 0 :(得分:1)

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