【问题标题】:Delphi DataSnapXE BroadcastMessage errorDelphi DataSnapXE BroadcastMessage 错误
【发布时间】:2011-07-25 12:08:42
【问题描述】:

我有一个使用 TCP/IP 的 DatasnapXE 客户端服务器应用程序。服务器使用 TDSServer.broadcastmessage 向客户端广播消息 如果用户由于某种原因不再可用,DSServer 会触发 OnError 事件。

在 OnError 中我无法弄清楚如何确定哪个用户已关闭?有可能吗?

最好的问候, 基里尔·哈吉耶夫

【问题讨论】:

  • 你最后找到解决办法了吗?我们有同样的问题,无法检测客户端何时“不正常”断开连接。

标签: delphi broadcast datasnap onerror


【解决方案1】:

在 XE 中没有简单/明显/内置的方法来确定这一点。你可以实现一些东西来完成这个,但它可能不像你想要的那么优雅。例如,您可以让服务器查询所有连接的客户端并让他们回复说他们仍然在那里。消除过程会将您带到断开连接的客户端。

其中一个主要问题是 XE 存在一个错误,该错误会阻止会话管理处理 TCP 连接。否则,您可以浏览活动会话(其中可能包含用户/客户端信息)以查看缺少哪些会话。

此外,XE 不支持 TCP Keep-Alive 设置,这在 TCP 连接被切断(例如,网络电缆被拔出)但仍处于打开状态的情况下很有用。如果没有 Keep-Alive,您只有在尝试编写某些内容时才知道客户端已消失。

您可能会在 RAD Studio/DataSnap 的未来版本中找到您想要轻松完成此任务的功能。

垫子

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-19
    • 2011-10-02
    相关资源
    最近更新 更多