首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对于主服务器来说,Java TCP保持活动。

对于主服务器来说,Java TCP保持活动。
EN

Stack Overflow用户
提问于 2010-06-02 09:22:13
回答 2查看 1.1K关注 0票数 1

上下文:主服务器(Java )监视托管游戏的列表(主服务器和每个托管游戏服务器的不同机器)。任何用户都可以在他的电脑上托管一个游戏。主办的游戏可以持续数周或几个月。

需要:知道宿主游戏服务器何时关闭或无法到达。

限制1:不能依赖托管服务器的“离线更新消息”,因为这些消息可能永远不会到达(停电、互联网链接切断等)。

限制2:我不确定TCP的内置保持存活,因为它意味着每台托管服务器24/7打开套接字(如果我错了,请纠正我)

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-06-02 09:28:06

听起来你好像遇到了所谓的“两军问题”,“协同攻击问题,或者,正如安德烈亚斯·D所指出的那样,两将军问题是你的限制。这个问题背后的想法是,两支军队想要协调对敌人的进攻。他们需要同时进攻,因为每一支军队都知道,如果他们自己进攻,他们就会死。”

问题是:一支军队怎么知道他们的信使,谁带着协调攻击的时间,已经成功地到达了另一支军队?另外,第二支军队怎么能确定第一支军队知道他们收到了消息,并计划进攻?有可能两军之间的任何信息都无法顺利到达,因此军队永远无法确定他们是否得到了适当的协调。

正因为如此,最简单的答案可能是在预定的时间间隔内对每一个运行中的游戏执行ping操作,同时也可以在用户请求刷新时执行ping操作。您可以使用此信息填充主列表。

票数 0
EN

Stack Overflow用户

发布于 2010-06-02 09:41:45

考虑使用某种心跳信息。那些信息(“我还活着!”)定期发送,如果主服务器没有从托管服务器(在一定时间内)获得心跳消息,它就会知道这个托管服务器是不可用的。

如果您需要从托管服务器获得更详细的信息,甚至可以向此消息添加一些状态参数(比如“完全操作”、“5分钟内进行维护”等)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2956356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档