2 つのネットワーク ソケットが与えられた場合、内容に一切触れずに一方から他方へデータをパイプする最も効率的な方法は何ですか?
splice
Linux で提供されるものと同様に、カーネル空間でソケットからソケットへのデータ パイピングを管理する方法 (システム コール API) はありますか? これは、私splice
が現在 Haskell で使用している方法です: Haskell でゼロコピー Socket から Socket へのデータ転送に GNU/Linux システム コール `splice` を使用します。
1 に答える
1
Windows のゼロコピー API は TransmitFile と呼ばれます。ファイル ハンドルを読み取り、ソケットを書き込みます。通常は、Web サーバーから静的ファイルを提供するために使用されます。Windowsでも通常はできるので、ファイルハンドルとしてソケットハンドルを指定できると思います。もしそうなら、それはあなたの問題を解決するはずです。私はそれを試していないし、ドキュメントはこの点について明示的ではないので、確かではありません. ただし、これはゼロコピー API なので、機能しない場合は、そうすべきです。
于 2012-04-26T20:11:18.760 に答える