【问题标题】:Broadcasting message from server to multiple client using c#使用c#将消息从服​​务器广播到多个客户端
【发布时间】:2011-08-19 08:22:21
【问题描述】:

场景:想要从服务器向多个客户端广播消息。

需要:我有一台服务器和多个连接到该服务器的客户端。如果管理员想要更新服务器,那么服务器将向所有连接的客户端广播消息“请注销...服务器正在更新”。

如果有人对消息广播回复有任何想法,请尽快回复。我正在使用 TcpServer

语言:c#

【问题讨论】:

标签: c# message broadcasting


【解决方案1】:

对于 TCP,我使用从主服务器协议线程初始化的线程;当需要发送给每个客户端的主数据结构发生变化时,会设置一个静态布尔值并将相关数据发送给客户端,该客户端还有一个线程,该线程在主客户端协议线程之外实现以监听和实施这些更改。

我使用令牌传递系统来锁定对数据结构的访问,因此客户端只能在调用其令牌时进行更改。我标记了每个令牌,以便在每个用户收到要更改的数据之前,不会将静态变量设置为 false。

这在逻辑上比使用单行代码更具挑战性。无论如何,任何库接口都必须使用类似的逻辑,因为它必须联系 (n) 个客户端。

在我的例子中,这种用法减少了客户端调用,并且只允许传递已更改的数据。与传递整个数据结构的初始加载不同,但我做了类似的事情,也与遍历数据结构并将其保存到硬盘有关。这意味着减少了通过网络传递的数据,并使主协议线程保持打开的时间更长,以便真正需要访问的人获得它。

编辑:所以没有人抱怨,我说的是直接 TCP/IP 而不是 UDP,需要建立连接。 UDP 确实使用了多播概念,并且设置起来相当容易。请注意,它很容易带来安全风险,尽管它确实提供了一些效率,但它的使用范围应该被视为有限。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-24
    • 2018-11-14
    • 1970-01-01
    • 1970-01-01
    • 2012-07-18
    • 2016-05-24
    • 2015-06-19
    相关资源
    最近更新 更多