私はvclフォームクライアントを持つdatasnapサーバを持っています。クライアントから、サーバがシャットダウンを知らせて、既存のクライアント接続で再起動した場合、どうすれば対処できますか?このシナリオでは、10053 EIdSocketError例外が発生します。DatasnapとSocketError
複製するには、サーバーとクライアントの両方を起動し、サーバーへの呼び出しを行います(私はDataSnapプロキシジェネレータを介して公開されたメソッドを使用します)。その後、サーバーをシャットダウンし(アプリケーションを閉じるなど)、再起動します。私は再びサーバーへの呼び出しを試みます。
例: dspPolicyGroupがTDataSetProviderで、cdsPolicyGroupがTClientDataSetのある
sm := TsvrPolicySearchClient.Create(datClientDB.SQLConnection1.DBXConnection);
try
ds := sm.SearchPolicyByPolicy(40, WCRef, '', 3);
dspPolicyGroup.DataSet := ds;
if cdsPolicyGroup.Active then
cdsPolicyGroup.Refresh
else
cdsPolicyGroup.Open;
finally
sm.Free;
end;
CLIENTコール(私はローカルに "店舗" 私のTDataSetの結果を、それを使用)。
サーバ
function TsvrPolicySearch.SearchPolicyByPolicy(AClientId: Integer; WCRefNum, ClientRef: string; SearchMethod: Integer): TDataSet;
begin
spPolicyByWCRef.Close;
spPolicyByWCRef.ParamByName('p_client').AsInteger := AClientId;
spPolicyByWCRef.ParamByName('p_search_method').AsInteger := SearchMethod;
spPolicyByWCRef.ParamByName('p_wc_refno').AsString := WCRefNum;
spPolicyByWCRef.Open;
Result := spPolicyByWCRef;
end;
私は、これは定期的にそれを複製することは非常に簡単だということを見て人が遭遇されると思うだろう。私はEIdSocketError(と等価)とハンドルをチェックするために各呼び出しの前に "Test Connection"コールか何か(TestConnectionメソッドなど)を配置する必要がありますか?または、おそらくそれはより多くの設計上の欠陥ですか?
おかげ