アプリケーション モバイル アプリケーションの開発に 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');
これを使用すると、サーバーアプリケーションでデータを受信できるようになりました。
このバッファデータをサーバーソケットに適切に送信するための助けを提供してください。そして、前もって感謝します