Indy10 TCP和异步数据交换

时间:2013-05-21 08:32:03

标签: delphi tcpclient indy tcpserver

早上好。我正在使用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 Server / Client示例应用程序,但我很少被困在这里。只是提到连接正常,我连接到服务器没有问题。

0 个答案:

没有答案