德尔福:TTcpServer,读取时连接重置(Delphi: TTcpServer, connect

2019-08-21 02:22发布

我想实现一个FitNesse的超薄服务器德尔福,但有一些问题的通信。

FitNesse的开始我的过程,并给我一个端口号作为命令行参数。

然后,我应该建立在给定的端口号的套接字,并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的超薄服务器一切工作正常。 oSpy然后示出了相同的通信,一直到第一读取。 当我尝试读取失败,这一次按预期工作。

Answer 1:

看看这个网站的德尔福适合服务器 +源代码



文章来源: Delphi: TTcpServer, connection reset when reading