Delphi 用のFitnesse Slim サーバーを実装しようとしていますが、通信に問題があります。
Fitnesse は私のプロセスを開始し、コマンドライン引数としてポート番号を与えてくれます。
次に、指定されたポート番号でソケットを作成すると、Fitnesse はそのポートに接続します。
仕事にTTcpServerを使用しています:
TcpServer1.LocalPort := ParamStr(ParamCount);
TcpServer1.Active := true;
OnAccepted( ) イベントでは、仕様で指定されているように、使用するプロトコル バージョンを送信します。
procedure TForm1.TcpServer1Accept(Sender: TObject;
ClientSocket: TCustomIpClient);
var
s: ansistring;
begin
ClientSocket.Sendln('Slim -- V0.0', #10);
setLength(s, 6);
ClientSocket.ReceiveBuf(s, 6);
end;
ReceiveBuf( ) を呼び出すと、プロセスが終了し、fitnesse が例外をスローします。
java.net.SocketException: Connection reset
oSpyを使用して、何が送受信されるかを確認しました。コードがプロトコル バージョンを送信した後、fitnesse がメッセージを返信し、このメッセージを受信しようとすると接続がリセットされることがわかります。
これの理由が何であるか知っている人はいますか?私は何か完全に間違っていますか?
ところで、fitnesse に付属の Java Slim サーバーを使用すると、すべて正常に動作します。oSpy は、最初の読み取りまで、同じ通信を表示します。読み取りに失敗しましたが、これは期待どおりに機能します。