と、言っても単に SSTP サーバーがうまく動作するかどうかを調べるツールを作っただけ。って言うか、前回アップしてたやつの汎用発展型と言うか。ベースになったソースコードは同じです。
いつも SSTP クライアントを実装する時は、1本のソースコードをアプリ毎に書きなおしてたりしまて、実際それで十分だったのですが、今回はコンポーネントとして実装。って言うか Delphi 用のコンポーネントは在るんですけどね。それこそ、他人のものを使うほどのコーディングじゃありませんので。
実装済みの SSTP 規格としては、SEND の 1.1〜1.3 と、EXECUTE の 1.0 だけです。SSTP サーバーが作られる過程では、当然 COMMUNICATE や GIVE と言ったリクエストを追加する事になりますが、現段階ではテストアプリ用なのでそれ以外にあっても仕様がないので、割愛です。
……ホントは SEND だって 1.1 だけで十分なんですけどねぃ。ついでだったからオーバーロード関数を定義した、と言う。
function TSstpClient.DoSendPacket: Boolean; var CLK: TTime; TMC: TTime; // TimeOutSec begin TMC := EncodeTime( 0, 0, 3, 0 ); // 待ち時間設定 CLK := NOW; FSocketResult := ''; FClientSocket.Open; FClientSocket.Close; repeat Application.ProcessMessages; Result := (FSocketResult <> ''); until Result or ((NOW - CLK) >= TMC ); end; |
function TSstpClient.Send(Script: String; Options:TSstpSendOptions): Boolean; begin FPacketBuffer.Clear; FPacketBuffer.Append( 'SEND SSTP/1.1' ); FPacketBuffer.Append( 'Sender: '+ SenderName ); FPacketBuffer.Append( 'Script: '+ Script +'\e' ); FPacketBuffer.Append( GetSstpSendOptions( Options ) ); FPacketBuffer.Append( '' ); Result := DoSendRequest; end; |