delphi.gif (306 バイト) ClientSocketの使い方


ClientSocketコンポーネントは、Windows Socketを使ったTCP/IPクライアントアプリケーションを作るのに使用します。

 

toach.gif (917 バイト) サーバに接続するには

  1. HostプロパティまたはAddressプロパティでホスト(サーバ)のホスト名あるいはIPアドレスを指定します。両方指定したときはHostが使用されます。
  2. Portプロパティで接続するポート番号を指定します。ポート番号はホストが提供するサービスによって決められています。
  3. ClientTypeを決めます。(下記「ソケットによる読み書きを行うには」参照のこと)
  4. Openメソッドによって接続を行います。ActiveプロパティをTrueにしておくと、アプリケーション起動時に接続要求が行われます。
  5. 接続が完了するとOnConnectイベントが発生するので、接続完了時に行いたい処理があれば記述します。
  6. このとき、接続に関する情報を知りたいのであれば、Socketオブジェクト(イベントパラメータ)が利用できます。

Statusbar1.Panels[0].Text := 'Connected to: ' + Socket.RemoteHost;

 

toach.gif (917 バイト) ソケットによる読み書きを行うには

非ブロッキング接続

非ブロッキング接続では、ソケットを通しての読み書きはアプリケーションの実行とは非同期に行われます。アプリケーションは、OnRead、OnWriteイベントハンドラで応答します。つぎの例は\Delphi3\DemosにあるChatの一部で、OnReadイベントでSocketオブジェクトのReceiveTextから受信テキストを読み取る例です。テキストを送るには、ClientSocket.Socket.SendTextメソッドを使用します。

procedure TChatForm.ClientSocketRead(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Memo2.Lines.Add(Socket.ReceiveText);
end;

ブロッキング接続

ブロッキング接続では、アプリケーションはソケットの読み書きが完了するのを待ってから、次の処理を行います。したがって、アプリケーションはその間、何の処理もできないことになります。何かの処理が必要なら読み書き用のスレッドを用意する必要があります。

 

toach.gif (917 バイト) 接続を閉じるには

Closeメソッドによって接続を閉じることができます。このとき、OnDisconnectイベントが発生します。

 

toach.gif (917 バイト) ClientSocketのサンプル

\Delphi3\Demos\Internet\Chatにあります。