我正在尝试为 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 然后显示相同的通信,直到第一次读取。虽然我的阅读尝试失败了,但这本书按预期工作。