おそらくあなたは、Microsoft の IE ブラウザなどのインターネット アプリケーション ソフトウェアの強力な機能と高度な技術に感銘を受けているかもしれませんが、まだそのような複雑で大規模なシステムを開発する能力はないかもしれませんが、心配しないでください。ここでチャンスが得られます。練習するには、Delphi の Winsocket を使用して TCP/ip ベースのアプリケーションを作成する方法を学習する必要があります。これは、Delphi 開発ツールにすでに慣れていることを前提としています。
最初からリモート コンピュータと通信するプログラムを作成する場合は、関連するネットワーク プロトコル、システムの基礎知識、ネットワーク ソフトウェアとハードウェア テクノロジについての包括的な知識と習熟が必要であると想像できます。ほとんどの人にとって、それは短期間でしか達成できません。
幸いなことに、Delphi のネットワーク コンポーネント ライブラリは、複雑な実装の詳細をカプセル化したネットワーク通信を実装するためのコンポーネントを提供します。 ClientSocket コンポーネントと ServerSocket コンポーネントを使用すると、独自のネットワーク通信およびリソース共有プログラムを簡単に作成できます。
Delphi 4.0 で Winsocket プログラムを作成する手順は次のとおりです。
1) Winsocket コンポーネントのプロパティ設定。
2) リモート コンピュータとの接続を確立します。
3) コンピュータ間のデータ転送。
これら 3 つのステップについては、以下で詳しく説明します。
1つ。 Winsocket プロパティの設定
Delphi 4.0 では、Winsocket は ClientSocket と ServerSocket の 2 つのコンポーネントに分割されています。これらはそれぞれクライアント側コンポーネントとサーバー側コンポーネントとして機能します。つまり、ClientSocket コンポーネントはクライアント プログラムで使用され、ServerSocket コンポーネントはサーバー側で使用されます。これら 2 つのコンポーネント間の通信と補助アプリケーション コードを組み合わせることで、単純な通信プログラムを実装できます。もちろん、ServerSocket をクライアント プログラムに導入すると、クライアント プログラムはサーバーとして機能し、他のクライアント プログラムからの要求に応答することができます。
サーバー側プログラムを作成している場合は、ServerSocket コンポーネントの Port プロパティを設定する必要があります。このパラメーターが設定される理由は、同じコンピューター上で複数のサーバー プログラムが実行され、リモート クライアント プログラムからの接続要求を常に受け付けている可能性があるためです。電子メールを送信しようとして、システムがリクエストを別のサーバー プログラムに接続すると、電子メールは間違いなく正しく送信されません。したがって、サーバープログラム上のServerSocketコンポーネントには適切なポート番号Portを設定する必要があります。また、ServerSocket によって提供されるサービスの種類 (FTP、HTTP など) を示す Service 属性を設定することもできます。次に、Active プロパティを True に設定します。
クライアント プログラムを作成している場合は、ClientServer コンポーネントを設定するためのプロパティがさらにあります。 Port 属性は、サーバー側の Port 属性の値と一致するように設定する必要があります。さらに、Host プロパティを正しく設定する必要があります。これは読み取り専用のプロパティであり、設計時には使用できません。これは、クライアント プログラムが接続するリモート サーバーのホスト名を示します。リモート ホストの IP アドレスである Address 属性を設定することもできます。両方の属性が設定されている場合、システムは Host 属性を使用するため、Address 属性で設定された IP アドレスは無効になります。
二。リモートコンピュータへの接続を確立する
リモート コンピュータ システム間でデータを転送するには、まず 2 つの通信ホスト間で接続を確立する必要があります。
サーバー側の ServerSocket コンポーネントは、Open メソッドを呼び出して Socket 接続を初期化します。同時に、Active 属性を True に設定し、ServerSocket コンポーネントをリスニング モードに設定し、接続要求があるかどうかを随時検出します。
サーバーがクライアント プログラムからの接続要求を受け入れると、OnAccept イベントがトリガーされます。次のコードは、接続を受け入れた後にサーバー プログラムが実行する必要がある処理です。
手順 Myform..ServerSocketAccept(送信者: TObject、ソケット: TCustomWinSocket);
始める
IsServer := True;
終わり;
クライアント プログラムでは、ClientSocket コンポーネントが Port や Host などの必要なプロパティを設定し、Active プロパティを True に設定して接続要求を行います。
三つ。コンピュータ間のデータ転送
サーバーがクライアントからの接続要求を受け入れると、クライアントはデータを送信できるようになります。このとき、クライアントとサーバーの間にはSocketが存在し、このSocketを介して通信が行われます。したがって、Socket 属性は非常に重要であり、いくつかの簡単なメソッドを使用してデータを送受信できます。
クライアント側では次の形式を使用します。 ClientSocket1.socket.sendtext('送信したい文字列');
サーバー側では、次の形式になります。 ServerSocket1.socket.recievetext(str: string); この関数は、受信した文字列の長さを返し、その文字列を変数 str に格納します。
上記は、データ送信の最も単純な例です。Socket プロパティによって提供される他のメソッドを使用して、複雑なデータ送信を実装することもできます。
Delphi 4.0 で Winsocket コンポーネントを使用するのは非常に便利ですが、Winsocket コンポーネントを使用してネットワーク アプリケーションを開発することに本当に習熟したい場合は、そのヘルプ ファイルとサンプル プログラムを注意深く読む必要があります。継続学習におけるこの方法の利点を比較し、そのプログラミング機能を習得してから、Delphi で提供される他のネットワーク コンポーネント (NMPOP3、NMUDP、NMFTP など) のプログラミング スキルを習得します。その頃には、他人のネットワーク アプリケーション ソフトウェアをただ流用して設定し、上手に操作するのではなく、実際のネットワーク アプリケーションの開発に参加できるようになります。