Delphi:TTcpServer,读取时连接重置

时间:2009-10-19 21:25:32

标签: delphi sockets fitnesse ttcpserver

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

1 个答案:

答案 0 :(得分:0)

查看此网站,了解delphi Fit server +源代码