使用c#从服务器向多个客户端广播消息

时间:2011-08-19 08:22:22

标签: c# message broadcasting

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

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

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

语言:c#

1 个答案:

答案 0 :(得分:1)

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

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

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

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

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