次のTableIRCにSynapseと言うDelphiコンポーネントを使おうとして迷ったために作ったメモ。
あまり整理されていません。随時更新します。
Synapseでの繋ぎ方
SynapseはTSynaClientクラスの子として、FTPやSMTPなどの機能をまとめたユニットを持っていますが、
そのTSynaClientの子に基本となるTCP送受信だけをまとめたようなコンポーネントは用意されていません。
基本となるTCP送受信はTSynaClient継承ではなく、「TTCPBlockSocket」などを使用して行います。
例えば、localhost:6667に用意されたIRCサーバーにニックネーム「Fumino」、正式ユーザー名「Welcome to synapse」で
ログインするためのソースは以下のようになります。
Host := localhost;
Port := 6667;
FSock := TTCPBlockSocket.Create;
FSock.Connect(Host,Port);
FSock.SendString(‘NICK Fumino’ + #13#10);
FSock.SendString(‘USER Fumino 8 * :Welcome to synapse’ + #13#10);
上記を実行した状態で
Memo1.Text := FSock.RecvString(2000);
とすると応答(おおむねWelcomeメッセージ)を1行ずつ取得できます。応答が何もなければ、2秒後にタイムアウトエラーが飛んできます。
このタイムアウトを含め、基本的にいかなる時でもソケットから例外は発生しませんが
FSock.RaiseExcept := True;
とすることで例外を呼んでくれるようになります。デバッグ時にご利用ください。