0

おはようございます。TIdTCPClient と TIdTCPServer を使用して、Indy 10.0.52 を使用して 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 が実行されないため、クライアント サイトの 2 番目の ReadLn が読み取られないことです。単一の手順での複数の非同期データ送信はサポートされていますか?単純な Indy TCP サーバー/クライアント アプリケーションでいくつかの例に出くわしましたが、私はここで少し立ち往生しています.接続が機能していることに言及するだけで、サーバーに問題なく接続できます.

4

0 に答える 0