メソッドパラメータとしてバイナリデータのストリームをサーバーに渡す必要があるTCP/IPプロトコルを使用してDelphiXE2でDataSnapプロジェクトに取り組んでいます。私が遭遇している問題は、ストリームの内容に約32KBのサイズ制限があるように見えることです。この制限を超えると、サーバーで受信されたストリームは空になります。追加のメソッドパラメータを渡すと、そのまま到着するため、パラメータレベルで問題が発生しているようです。
DataSnapサービスクラスの宣言方法は次のとおりです。
TDataSnapTestClient = class(TDSAdminClient)
private
FSendDataCommand: TDBXCommand;
public
constructor Create(ADBXConnection: TDBXConnection); overload;
constructor Create(ADBXConnection: TDBXConnection; AInstanceOwner: Boolean); overload;
destructor Destroy; override;
procedure SendData(Data: TStream);
end;
少なくともジム・ティアニーの記事によれば、私が使用しているアプローチはうまくいくはずです。とは言うものの、Delphi 2009以降、JimTierneyのサンプルコードを壊した変更があったようです。
この問題を解決する方法についてのアイデアをいただければ幸いです。