Windows ソケット : 動作シーケンス
この技術情報では、ソケット サーバーとクライアント ソケットの操作の side-by-side、シーケンスついて説明します。ソケットで CArchive のオブジェクトを使用するため、必ずしも ストリーム ソケットです。
ストリーム ソケットで通信するための一連の操作
CSocketFile のオブジェクトの構築の点まで、次のシーケンスは CAsyncSocket と CSocket両方に正確 (いくつかのパラメーターを相違点と)です。これ以降は、シーケンスは CSocketの場合のみです。次の表は、クライアントとサーバー間の通信を設定するための一連の操作を示しています。
サーバーとクライアント間の通信
サーバー |
クライアント |
---|---|
// construct a socket CSocket sockSrvr; |
// construct a socket CSocket sockClient; |
// create the SOCKET sockSrvr.Create(nPort);1,2 |
// create the SOCKET sockClient.Create( );2 |
// start listening sockSrvr.Listen( ); |
|
|
// seek a connection sockClient.Connect(strAddr, nPort);3,4 |
// construct a new, empty socket CSocket sockRecv; // accept connection sockSrvr.Accept( sockRecv ); 5 |
|
// construct file object CSocketFile file(&sockRecv); |
// construct file object CSocketFile file(&sockClient); |
// construct an archive CArchive arIn(&file, CArchive::load); または CArchive arOut(&file,CArchive::store); –または両方 ) |
// construct an archive CArchive arIn(&file, CArchive::load); または CArchive arOut(&file,CArchive::store); –または両方 ) |
// use the archive to pass data: arIn >> dwValue; または arOut << dwValue;6 |
// use the archive to pass data: arIn >> dwValue; または arOut << dwValue;6 |
1.nPort がポート番号です。ポートに関する詳細については Windows ソケット: ポートおよびソケット アドレス を参照してください。
2.サーバーはポートを指定する必要があります。クライアントが接続できます。生成(&&C),create,作成,生成 の呼び出しは、このアドレスを指定します。クライアント側で使用できるポートを使用するように MFC を呼び出す既定のパラメーターを使用します。
3.nPort は、ポート番号、および strAddr は コンピューター アドレス インターネット プロトコルの (IP) です。
4.コンピューター アドレスは複数の形式にすることができます: ftp.microsoft.com 「」、 「」 microsoft.com。IP アドレスは 「ドットを打たれた数」、 「127.54.67.32」が使用されます。(確実にチェックしないがアドレスのが打たれた数の数を確認 接続 関数のチェックは、ネットワークの有効なマシンです)。そうでない場合、 接続 そのほかのフォームの 1 台のコンピューター名を前提としています。
5.サーバー側の 承諾 をダイヤルすると、新しいソケット オブジェクトへの参照を渡します。このオブジェクトを最初に作成しますが、の 生成(&&C),create,作成,生成 をダイヤルしません。このソケット オブジェクトがスコープの出かけたら、接続を閉じることに注意してください。MFC ソケットはハンドルへの新しいオブジェクトを接続します。またはヒープのソケットをスタック、次のように構築できます。
6.スコープ外に出ると、アーカイブおよびソケットのファイルが閉じます。ソケット オブジェクトのデストラクターは、オブジェクトがスコープ外に出るまたは削除されると、ソケット オブジェクトの 閉じる(&&C),閉じる,終了しますか のメンバー関数をダイヤルします。
シーケンスに関する追加情報
上の表で示した呼び出しのシーケンスは、ストリーム ソケットためです。コネクションレスであるデータグラム ソケット (オプションで 接続を使用してもかまいません CAsyncSocket::Connect、 リッスンと 承諾 の呼び出しを必要としません。代わりに、クラス CAsyncSocketを使用すると、データグラム ソケットは CAsyncSocket::SendTo と ReceiveFrom のメンバー関数を使用します。データグラム ソケットで 接続 を使用している場合は、 送信,send と Receiveを使用します)。CArchive がデータグラムを使用しないため、ソケットがデータグラム Archive との CSocket を使用しないでください。
CSocketFile は entity_CODECFile のすべての機能をサポートしていません; ソケットで通信するための意味がない Seekなどの CFile のメンバーは使用できません。このため、一部は、 MFC の Serialize 関数ではありません。 CSocketFileと互換性のある設定します。これは CEditView のクラスの特に顕著です。接続された CSocketFile のオブジェクトへの CArchive のオブジェクトを通じて CEditView のデータを CEditView::SerializeRawを使用してシリアル化することはできません。; CEditView::Serialize を使用します (記載されていない)。SerializeRaw 関数は、関数が、 CSocketFile がサポートしない Seekなどのあるファイルとオブジェクトが必要です。
詳細については、次のトピックを参照してください。