11.3. ソケットオプションを使用したプログラム例
TCP_NODELAY および TCP_CORK ソケットオプションは、ネットワーク接続の動作に大きく影響します。TCP_NODELAY は、準備ができたらすぐにデータパケットを送信することで利益を得るアプリケーションで、Nagle のアルゴリズムを無効にします。TCP_CORK を使用すると、複数のデータパケットを遅延なく同時に転送できます。
TCP_NODELAY などのソケットオプションを有効にするには、次のコードを使用してビルドし、適切なオプションを設定します。
gcc tcp_nodelay_client.c -o tcp_nodelay_client -lrt
tcp_nodelay_server および tcp_nodelay_client プログラムを引数なしで実行すると、クライアントはデフォルトのソケットオプションを使用します。tcp_nodelay_server および tcp_nodelay_client プログラムの詳細は、Red Hat ナレッジベースソリューションの TCP changes result in latency performance when small buffers are used を参照してください。
サンプルプログラムは、これらのソケットオプションが与える可能性のあるアプリケーションへのパフォーマンスの影響に関する情報を提供します。
11.3.1. クライアントへのパフォーマンスの影響 リンクのコピーリンクがクリップボードにコピーされました!
TCP_NODELAY および TCP_CORK ソケットオプションを使用せずに、クライアントで小さなバッファー書き込みを送信できます。引数なしで実行すると、クライアントはデフォルトのソケットオプションを使用します。
データ転送を開始するために、サーバーの TCP ポートを定義します。
$ ./tcp_nodelay_server 5001このコードは、それぞれ 2 バイトのパケットを 15 個送信し、サーバーからの応答を待ちます。ここではデフォルトの TCP 動作を採用します