我想为delphi实现一个Fitnesse Slim server,但在通信方面有一些问题。德尔福:TTcpServer,当读取时连接重置
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然后显示相同的通信,直到第一次读取。虽然我的阅读尝试失败,但这一次按预期工作。
Vegar嗨,我已经写了FitNesse的超薄服务器呢。但我使用Indy-Components。它适用于Fitnesse-Wiki中的所有测试用例,但我不支持运行时软件包。对我来说,这是对Delphi 2010新Rtti-Features的测试。所以它只能在Delphi 2010上编译。我非常有兴趣分享我的代码以获得一些反馈。所以如果你喜欢或其他人在这里留下一张纸条。 – 2009-10-20 07:39:20
那太棒了! – Vegar 2009-10-20 08:06:27
@Vegar,我没有找到一种方法发送私人消息到其他的stackoverflow.com用户,所以我可以发送电子邮件到您的主页上的信息?我明天将发送消息。 – 2009-10-20 10:07:41