gpt4 book ai didi

c++ - 选择局域网中的一台计算机作为服务器

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:35:52 25 4
gpt4 key购买 nike

我正在开发一款小型联网游戏(仅限 LAN),其中一台计算机充当服务器,所有其他计算机(包括在同一台计算机上运行的实际游戏)充当客户端。本质上,服务器对用户是透明的,但它的存在是为了简化我的状态管理。我现在的基本概念是每个玩家的电脑都会通过广播说“嘿,我想玩”,并且会保留网络上其他玩家的列表。在每个运行游戏的玩家表示他们准备就绪后,选择一台计算机作为服务器,其余计算机默认为客户端。

在选择局域网中的哪台计算机用作服务器时,是否真的有既定的方法来选择一台计算机并通知其他计算机?

我一直在尝试简单地让所有玩家的计算机选择一个随机数并让具有最低(或最高,无关紧要)的服务器作为服务器(为滚动的计算机重新生成随机数)的基本想法同一个)。每台计算机都会收到其他计算机的“滚动”编号,并可以确定哪个是服务器,然后可以连接到该服务器。这看起来很粗糙,但我不确定这是否重要,因为所有计算机实际上都在同一网络上,彼此相距几英尺。这是否足以完成工作,还是有更好的方法?

最佳答案

老实说,我会做出比这更复杂的决定。我会倾向于做一些基本的信息收集来确定哪台计算机最强大并选择那台作为服务器(功率故意是一个模糊的术语,因为最强大的计算机将取决于服务器和游戏的要求) .考虑到服务器将需要运行额外的软件(除了游戏之外的服务器),除非所有计算机都具有相同的规范,否则会有一个比其他计算机更适合这项任务。只要所有节点都对数据进行相同的评估,它们就应该就谁应该领导达成共识,或者您可以让创建游戏的第一个节点负责确定哪个节点应该是服务器。

将服务器设置为定期重新评估其作为服务器的资格也可能是值得的。例如,后台进程可能会启动,这会阻碍其充分执行的能力,或者更强大的节点可能会加入游戏。显然,转移托管游戏的服务器并非易事,但这是需要考虑的事情。 (请记住,这种情况发生在在线游戏中,例如 Halo。当所有客户端与服务器的连接低于某个阈值时,游戏将暂停并在可以提供更好性能的不同服务器上重新建立)。

关于c++ - 选择局域网中的一台计算机作为服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6393458/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com