2011-07-25 11 views
1

私は、TCP/IPを使用してDatasnapXEクライアントサーバーアプリケーションを使用しています。 TDSServer.broadcastメッセージを使用してクライアントへのサーバーブロードキャストメッセージ 何らかの理由でユーザーがもう使用できなくなった場合、DSServerはOnErrorイベントを発生させます。Delphi DataSnapXE BroadcastMessageエラー

OnErrorでは、どのユーザーが停止しているかを判断する方法がわかりません。それはまったく可能か?

敬具、 キリルHadjiev

+0

解決策は最後に見つかりましたか?クライアントが「非正常に」切断すると、同じ問題が検出できなくなります。 –

答えて

1

XEでこれを決定するのは容易な/明白/組み込みの方法はありません。あなたはこれを達成するために何かを実装することができますが、それはあなたが望むほどエレガントではないかもしれません。たとえば、サーバーに接続されているすべてのクライアントを照会させ、依頼者がまだそこにいると応答するようにすることができます。排除のプロセスは、切断されたクライアントにつながります。

主な問題の1つは、XEでセッション管理がTCP接続を処理できないバグがあることです。そうしないと、アクティブなセッション(ユーザ/クライアント情報を含むことができる)をナビゲートして、欠落しているセッションを表示することができます。

また、TCP接続が切断された状態(ネットワークケーブルが接続されていないなど)では開いたままの状態で便利なTCPキープアライブ設定はサポートされていませんでした。キープアライブなしでは、あなたは何かを書くときにクライアントがなくなったことを知っているだけです。

RAD Studio/DataSnapの今後のリリースでは、これを簡単に実現したい機能が利用可能であることがあります。

マット