我正在尝试为delphi实现Fitnesse Slim server,但是在通信方面存在一些问题。
Fitnesse将开始我的进程,并给我一个portnumber作为命令行参数。
然后我应该在给定的端口号创建一个套接字,Fitnesse将连接到该端口。
我正在使用TTcpServer来完成这项工作:
TcpServer1.LocalPort := ParamStr(ParamCount);
TcpServer1.Active := true;
在OnAccepted()-event中,我发送要使用的协议版本,如规范中所指定。
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然后显示相同的通信,直到第一次读取。当我尝试阅读失败时,这个尝试按预期工作。