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