我正在为带有异步套接字的MMORPG开发服务器。对于协议,我正在使用UDP。使用有效凭据连接的每个客户端都存储在服务器的列表中。此列表的项目包含端点(System.Net.EndPoint)。这样,我可以访问所有客户端并将消息发送给他们。
您可能已经知道,在MMORPG中,每个玩家(客户端)都会移动并不断发送其坐标。然后需要将此坐标广播到周围的玩家(客户端)。
我的问题是我的广播解决方案如下:
Parallel.ForEach(clientsToSend, (client) =>
{
SendUdpMessage(client.UdpEndPoint, broadcastMessage);
});
我担心一个地方有几十个客户时会发生什么。假设有50位玩家,他们同时移动。服务器将循环50个客户端,并向每个客户端发送他的消息。希望你明白了。
有没有一种“真正的”广播方式?因为我们不在网络层(通过子网进行IP广播),但是有一个客户端列表。