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

本文关键字:客户端 广播 服务器 消息 使用 | 更新日期: 2023-09-27 18:05:59

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

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

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

Language: c#

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

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

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

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

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

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