C ++でのネットワークアプリケーションのプログラミング

良い一日! このトピックに関する数か月の作業で得た経験を皆さんと共有したいと思います。

現在、ネットワークゲームとアプリケーションの人気が高まり続けていると同時に、ネットワークで動作する独自のプログラムを作成したいと考える人々の数が増えています。

それはすべて、C ++で通常のチャットを書く必要があるという事実から始まりました。 当然、多くの時間を費やすことなく、より簡単な方法を見つける必要がありました。



C ++ Builderは、ネットワークアプリケーションを作成するためのいくつかのオプションを提供します。



1. winsock.hライブラリ(Windows Socketsライブラリ)を使用します

この方法は普遍的であるという点で優れており、これは絶対的なプラスです。 ただし、この方法を選択した場合は、WinAPIを掘り下げてスレッドを作成する必要があり、誰もができるわけではないという事実に備えてください。 したがって、この方法は、完成したプログラムを書く時間があまりない状況ではあまり適していません。



2. Indyコンポーネントを使用する

この方法を使用する場合は、1つの大きな欠点-貧弱な耐性を経験する準備をしてください。 コンポーネントはライブラリバージョンに非常に大きく依存しており、ソフトウェア環境の新しいバージョンごとに、コンポーネントの新しいプロパティとメソッドが追加または処理される新しいバージョンのIndyライブラリが提供されます。 また、もっと普遍的なものを見つけたいと思ったので、この方法もすぐに中断しました。



3. TcpServerおよびTcpClientコンポーネントを使用する

個人的には、これらのコンポーネントでチャットを構築しようとしましたが、何もできませんでした。 親愛なるHabrausersが、これらのコンポーネントの使用に成功したことを願っています。



4. ServerSocketおよびClientSocketコンポーネントを使用する

基本的に、これらのコンポーネントはWindowsソケットに基づいています。ここでのみ、WinAPIを使用する必要はありません。 これらはすべて、これらのコンポーネントのプロパティとメソッドを正しく使用することに帰着します。 この方法は十分な時間を節約するため、短時間で結果を必要とする状況では完全に適合します。



そのため、これらのコンポーネントについて少し説明します。

これらは、C ++ Builder 6のコンポーネントパレットの「インターネット」タブにあります。このソフトウェア環境の以降のバージョンでは、開発者はこのパレットから問題のコンポーネントを削除しましたバージョンは最後の桁でのみ異なる場合があります)、プロジェクト設定(メニュー[プロジェクト]-> [オプション]-> [パッケージ]->ボタン[追加...])で設定する必要があります。 指定したパッケージをインストールすると、コンポーネントが[インターネット]タブのパレットに表示されます。



ServerSocketとClientSocketは、ブロッキングと非同期の2つのモードで動作できます。 違いは、ブロックモードでは、サーバープログラムは新しいクライアントが接続するまでその操作を一時停止し、各クライアントは個別のスレッドで処理されることです。 したがって、サーバープログラムが次のクライアントを待たずに静かに動作し続ける非同期モードを選択することをお勧めします。



サーバーを作成するには、ServerSocketコンポーネントで、使用するポートを指定するだけです。 これは0〜65535の整数です。その後、次のメソッドのみが使用されます。サーバーを作成するためのOpen()と、サーバーを破棄するためのClose()。



ClientSocketコンポーネントを使用して、アプリケーションのクライアント部分を作成できます。 ClientSocketコンポーネントには、次のプロパティがあります。

ClientSocket1->Address; // , IP-

ClientSocket1->Host; // , DNS

ClientSocket1->Port; // , ,






HostプロパティはAddressプロパティよりも優先されることに注意してください。 したがって、両方のプロパティを指定すると、ホストプロパティで指定されたDNSサーバーから接続が確立されます。 接続は、同じOpen()およびClose()メソッドを使用して確立または切断されます。



両方のコンポーネントに共通するのは、ブールプロパティActiveです。これは、接続の正確さ(またはアクティビティ)を決定します。



ご覧のとおり、すべてがシンプルです。 ただし、これらのコンポーネントで実行される一連のイベントには注意してください。数日以内に、簡単なチャットを作成して友人とチャットできるようになると思います。



このトピックに関する私の研究の結果は方法論の開発につながり、おかげでプログラミング試験に合格しました。 また、この記事で説明したコンポーネントの動作原理について詳しく説明します。

また、Arkhangelsky A.Yaの本に精通することをお勧めします。 「C ++ Builder 6および2006のプログラミング手法。Windows、ネットワークメカニズム」。これは、ネットワークアプリケーションの開発のトピックもカバーしています。



頑張って!



All Articles