次の方法で共有


Windows ソケット : 動作シーケンス

この技術情報では、ソケット サーバーとクライアント ソケットの操作の side-by-side、シーケンスついて説明します。ソケットで CArchive のオブジェクトを使用するため、必ずしも ストリーム ソケットです。

ストリーム ソケットで通信するための一連の操作

CSocketFile のオブジェクトの構築の点まで、次のシーケンスは CAsyncSocketCSocket両方に正確 (いくつかのパラメーターを相違点と)です。これ以降は、シーケンスは 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::SendToReceiveFrom のメンバー関数を使用します。データグラム ソケットで 接続 を使用している場合は、 送信,sendReceiveを使用します)。CArchive がデータグラムを使用しないため、ソケットがデータグラム Archive との CSocket を使用しないでください。

CSocketFile は entity_CODECFile のすべての機能をサポートしていません; ソケットで通信するための意味がない Seekなどの CFile のメンバーは使用できません。このため、一部は、 MFC の Serialize 関数ではありません。 CSocketFileと互換性のある設定します。これは CEditView のクラスの特に顕著です。接続された CSocketFile のオブジェクトへの CArchive のオブジェクトを通じて CEditView のデータを CEditView::SerializeRawを使用してシリアル化することはできません。; CEditView::Serialize を使用します (記載されていない)。SerializeRaw 関数は、関数が、 CSocketFile がサポートしない Seekなどのあるファイルとオブジェクトが必要です。

詳細については、次のトピックを参照してください。

参照

関連項目

CSocket クラス

CAsyncSocket::Create

CAsyncSocket::Close

概念

MFC における Windows ソケット