Synapseを使ってみる

次の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;

とすることで例外を呼んでくれるようになります。デバッグ時にご利用ください。

 


コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)