次の方法で共有


ソケット パフォーマンスの技術サンプル

[This documentation is for preview only, and is subject to change in later releases. Blank topics are included as placeholders.]

このサンプルでは、強化された System.Net.Sockets.Socket クラスの機能を使用し、非同期のネットワーク入出力によって最大限のパフォーマンスを実現するサーバー アプリケーションの構築方法を示します。

サンプルの使用については、次のトピックを参照してください。

コマンド プロンプトを使用してサンプルをビルドするには

  1. コマンド プロンプト ウィンドウを開き、AsyncSocketServer ディレクトリの CS サブディレクトリに移動します。 必要な設定および SDK のコマンド プロンプトについては、「方法 : サンプルを設定します。」を参照してください。

  2. コマンド ラインで「msbuild AsyncSocketServer.sln」と入力します。 このコマンドでは、AsyncSocketServer と AsyncSocketClient の両方のアプリケーションがビルドされます。

Visual Studio を使用してサンプルをビルドするには

  1. Windows エクスプローラを開き、AsyncSocketServer ディレクトリの CS サブディレクトリに移動します。

  2. AsyncSocketServer.sln のアイコンをダブルクリックし、Visual Studio でファイルを開きます。

  3. [ビルド] メニューの [ソリューションのビルド] をクリックします。

AsyncSocketServer アプリケーションも AsyncSocketClient アプリケーションも、既定の \bin ディレクトリまたは \bin\Debug ディレクトリにビルドされます。

サンプルを実行するには

  1. コマンド プロンプト ウィンドウを使用して、ビルドした実行可能ファイルが格納されているディレクトリに移動します。

  2. コマンド ラインに「AsyncSocketServer.exe」と入力し、適切なコマンド ライン引数を指定して、AsyncSocketServer アプリケーションを実行します。

  3. コマンド ラインに「AsyncSocketClient.exe」と入力し、適切なコマンド ライン引数を指定して、AsyncSocketClient アプリケーションを実行し、AsyncSocketServer アプリケーションをテストします。

Requirements

このサンプルを使用するには、.NET Framework Version 3.5、3.0 SP1、または 2.0 SP1 が必要です。

Demonstrates

System.Net.Sockets.Socket クラスにはさまざまな機能強化が図られていますが、その一環として、これまでにない非同期パターンを提供する一連の新しいクラスが追加されました。目的に特化したパフォーマンスの高いソケット アプリケーションに利用できます。 これらの強化された機能は、高いパフォーマンスが要求されるネットワーク サーバー アプリケーションを想定して設計されています。 アプリケーションでは、強化された非同期パターンを全面的に利用することも、対象領域 (大量のデータを受信する際など) を絞って利用することもできます。

AsyncSocketServer サンプルでは、エコー サーバーを実装して System.Net.Sockets.Socket クラスの新しいメソッドを使用する方法を示します。 このサーバーは、クライアントから読み取ったすべてのデータをクライアントに送り返します。 このサンプルに実装されたエコー サーバーは、複数のクライアント (最大数はコマンド ライン引数で指定) を同時に処理します。イベント ベースの非同期ソケット メソッドの鍵となる要素がよくわかるように配慮されています。 AsyncSocketServer サンプルでは、サーバーのパフォーマンスを高める手段として、再利用できるデータ バッファ プールのほか、System.Net.Sockets.SocketAsyncEventArgs コンテキスト オブジェクトを作成しています。

AsyncSocketClient サンプルは、AsyncSocketServer サンプル アプリケーションのテストに使用するためのシンプルなクライアント アプリケーションです。 AsyncSocketClient サンプルには、System.Net.Sockets.Socket クラスで導入された新しい機能は一切使用されていません。

AsyncSocketServer アプリケーションには、4 つのコマンド ライン パラメータが必要です。

AsyncSocketServer.exe <numConnections> <receiveSize > <addressFamily> <localPortNum>

次のパラメータがあります。

  • numConnections : サーバーが同時に受け入れることのできる最大接続数です。

  • receiveSize : サーバーが各受信操作に使用するバッファ サイズ (バイト単位) です。

  • addressFamily : サーバーが着信接続を待機するために使用するソケットのアドレス ファミリです。 サポートされている値は ipv4 および ipv6 です。

  • localPortNum : サーバーのバインド先のローカル ポートです。

IPv4 で最大 500 接続を許可し、各受信操作のバッファ サイズを 1024 バイトとし、待機ポートを 8000 とした場合の使用例を次に示します。

AsyncSocketServer.exe 500 1024 ipv4 8000

AsyncSocketClient アプリケーションには、2 つのコマンド ライン パラメータが必要です。

AsyncSocketClient.exe <destIPAddress> <destPortNum>

次のパラメータがあります。

  • destIpaddress : 接続先 AsyncSocketServer の IP アドレスです。

  • destPortNum : 接続先 AsyncSocketServer のポート番号です。

See Also

Reference

System.Net.Sockets.Socket

System.Net.Sockets.SendPacketsElement

System.Net.Sockets.SocketAsyncEventArgs

System.Net.Sockets.SocketAsyncOperation