0

Windows 7 サーバー上で高スループット (> 800Mbps) と低遅延を必要とする (クライアント) ソケットを実装する必要があります。オーバーラップされた IO は、高性能を実現するための方法のようです。

重複した I/O の利点は、OS にバッファを含むいくつかの構造体を渡し、それらがいっぱいになったときに通知されることです。

いいえ、これをパケットベースのプロトコル(長さで区切られたパケット、ヘッダーにはデータブロックのサイズが含まれています)と組み合わせる一般的な方法は何なのか疑問に思っています。もちろん、データの任意のチャンクを読み取って、必要なバイト数をメッセージ構造にコピーできます。これは、追加のコピー アクションを意味します。

2番目のオプションは、メッセージ構造をヘッダーサイズのバッファとして渡し、それを取得した後、同じ構造を再度渡して、要求されたデータバイト数を読み取ることです。この場合、最初のチャンク読み取りは小さいですが、データはメッセージ構造に保存され、データ ブロックの読み取りが保留されている間、次のヘッダー ブロックの読み取りを初期化できます。

長さで区切られたパケットを最も効率的に処理する方法についての経験やアイデアはありますか?

ありがとう、

4

1 に答える 1

0

パケット サイズがわかっている場合は、スキャッター/ギャザー I/O を確認してください。

于 2013-01-29T19:51:35.110 に答える