モバイル アプリとデスクトップ アプリケーションの開発に Delphi XE8 を使用しています。モバイル アプリケーションでは TIDtcpClient コンポーネントを使用し、デスクトップ アプリケーション アプリケーションでは TServerSocket を使用しています。
サーバー デスクトップ アプリケーションには、約 1500 のレコードを含む TList が含まれています。Client Mobile アプリケーションでこれらの値を取得するために、次の方法を使用しています。
- まず、ダウンロード リクエストがクライアント モバイル アプリからサーバー アプリケーションに送信されます。
- 次に、10 件のレコードを取得し、クライアント モバイル アプリケーションに送り返します。この後、Client List の値を更新し、再びサーバー アプリにリクエストを送り返します。
- レコード数に達するまで、このプロセスが続行されます。
問題は、この方法に従っている場合、ほぼ 2 分かかり、すべてのデータを適切に取得していることです。そこで、ファイル ストリーム方式を使用することにしました。以下にサンプルコードを記載しました。
サーバー側アプリ:
//first saved the List into FileStream & it is working as I have reloaded and checked
//So again I'm loading the saved file, The file Size is near to 400KB
FileStream := TFileStream.Create('D:\ListDet.dat', mtfmOpenRead);
Socket.SendStream(FileStream);
クライアント側のモバイル アプリ:
var
FileS: TFileStread;
i: Size;
begin
//Inside the thread
TiDTcpClient.IOHandler.ReadStream(FileS, i);
end;
上記の方法を使用していると、例外が発生し、データを取得できません。
サーバーからクライアントにデータをより速く取得するための解決策を教えてください。