11.2. TCP_CORK ソケットオプション


TCP_CORK オプションは、ソケット内のすべてのデータパケットを収集し、バッファーが指定された制限を満たすまでそれらを送信しないようにします。これにより、TCP_CORK が無効になっている場合に、アプリケーションがカーネル領域にパケットを作成し、データを送信できるようになります。TCP_CORK、setsocketopt() 関数を使用してソケットファイルディスクリプタに設定されます。プログラムを開発する際にファイルから一括データを送信する必要がある場合は、TCP_CORKsendfile() とともに使用することを考慮してください。

カーネル内でさまざまなコンポーネントによって論理パケットが構築される場合、setsockopt ソケット API を使用して TCP_CORK の値を 1 に設定することで、TCP_CORK を有効にします。これは "ソケットのコーキング" として知られています。TCP_CORK は、コルクが適切なタイミングで取り外されていないと、バグを引き起こす可能性があります。

次の例は、setsockopt ソケット API を介して TCP_CORK を有効にする方法を示しています。

int one = 1;
setsockopt(descriptor, SOL_TCP, TCP_CORK, &one, sizeof(one));

一部の環境では、カーネルがコルクをいつ取り除くかを識別できない場合は、次のように手動でコルクを取り除くことができます。

int zero = 0;
setsockopt(descriptor, SOL_TCP, TCP_CORK, &zero, sizeof(zero));
ヒント

詳細は、お使いのシステムの sendfile(2) の man ページを参照してください。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

Red Hat ドキュメントについて

Legal Notice

Theme

© 2026 Red Hat
トップに戻る