1

アプリケーション モバイル アプリケーションの開発に Delphi XE8 トレイル バージョンを使用しています。現在、私は明確に説明した以下の非常に重大な問題に直面しています。

My Project は 2 つの異なるアプリケーションに分かれています。

アプリケーション A : このアプリケーションは、VCL アプリケーションとして Delphi XE8 を使用して開発されています。このアプリケーションには TServerSocket があります。バイト配列を使用してデータを受信します。ほとんどの場合、このアプリケーションはデータをパックされたレコードとして受け取り、メッセージ ヘッダーに基づいて次のステップが実行されます。

アプリケーション B : このアプリケーションは、マルチ デバイス モバイル アプリケーションとして Delphi XE8 を使用して開発されています。このアプリケーションには TIdTCPClient があります。また、以下のようにデータを送信します。

TSamplePacket = packed record
  strValue: array [0..10] of Char;
end;

Procedure SendData;
var
  SamplePacket: TSamplePacket;
begin
  SamplePacket.strValue := '1000';
  IdTCPClient1.IOHandler.Write(@SamplePacket, SizeOf(TSamplePacket));
end;

IdTCPClient には IOHandler が割り当てられます。

問題: Delphi XE8 マルチデバイス モバイル アプリケーションで SendData プロシージャを呼び出したときに、サーバー アプリでデータを受信せず、クライアントで例外も発生しません。そして、Windows 7 デスクトップと Android モバイル Lolipop バージョンのモバイルもチェックしました。どちらのデバイスでも、クライアント アプリケーションはデータを送信していません。また、同じコードは、Delphi XE7 for Windows アプリケーションと Android KitKat バージョンのモバイル アプリケーションで問題なく動作しました。また、Delphi XE8 マルチ デバイス モバイル アプリケーションでは、パックされたレコードを TIDBytes に変換しようとしました。しかし、私はこれを行う方法がわかりません。

しかし、Delphi XC8 VCL アプリケーションを作成し、同じコードと同じコンポーネントを実装し、データを送信しようとすると、サーバー アプリケーションでデータを受信しました。

また、Delphi XE8 マルチデバイス モバイル アプリケーションで、以下に示すテキストを送信しようとした場合:

IdTCPClient1.IOHandler.Writeln('test');

これを使用すると、サーバーアプリケーションでデータを受信できるようになりました。

このバッファデータをサーバーソケットに適切に送信するための助けを提供してください。そして、前もって感謝します

4

1 に答える 1