0

大家早上好。我正在使用 Indy 10.0.52、TIdTCPClient 和 TIdTCPServer 构建一个 Delphi TCP 服务器/客户端应用程序。我在接收来自服务器的异步响应时遇到问题。这是我的示例代码部分:

客户:

procedure TfrmMain.ClientSend();
begin
   tcpClient.IOHandler.WriteLn('100|HelloServer');  
   if tcpClient.IOHandler.ReadLn() = '1100' then //Here I get 1100
      begin
         tcpClient.IOHandler.WriteLn('200|Are_you_ready_for_data?');
         if tcpClient.IOHandler.ReadLn() = '1200' then
            begin
            end;
      end;
end;

服务器:

procedure TfrmMain.tcpServerExecute(AContext: TIdContext);
var command:Integer;
var received,value:String;
begin
   received := AContext.Connection.IOHandler.ReadLn;
   command := StrToInt(SomeSplitFunction(received,'first_part')); //Here I get 100
   value := SomeSplitFunction(received,'second_part'); //Here I get 'HelloServer'

   case command of
      100:begin
         //Do something with value...    
         AContext.Connection.IOHandler.WriteLn('1100');    
      end;
      200:begin
         //Do something with value...    
         AContext.Connection.IOHandler.WriteLn('1200');
      end;
   end;
end;

问题是 tcpServerExecute 上的案例 200 永远不会执行,因此客户端站点上的第二个 ReadLn 永远不会被读取。是否支持在单个过程中发送多个异步数据?我遇到过几个简单的 Indy TCP 服务器/客户端应用程序示例,但是我有点卡在这里。只是提到连接正常,我连接到服务器没有问题。

4

0 回答 0