【问题标题】:Java client and server problemsJava客户端和服务器问题
【发布时间】:2009-12-06 10:46:08
【问题描述】:

我根据其他用户的推荐编辑了这篇文章。

我的具体问题是这样的:

目前,当我运行 Server.java 时,它会加载一个上面有玩家的地图,您无法按照我的意图移动玩家,它只是创建了一个新的“runGame”。

这个想法是当我运行 Client.java 时,它使玩家能够在地图上移动,通过创建一个新的 Craft 对象,就像现在一样,由于某种原因,它创建了另一个带有玩家的地图(两个运行现在),两者都没有运动。

我不知道如何进一步解释它,我想知道的是有人将如何创建一个打开背景的服务器和客户端,并添加一个可通过键移动的对象,但仅当客户端具有连接到服务器了吗?

我希望这比我上次尝试的措辞更好。

谢谢。

【问题讨论】:

  • 没错,这不是一个可以回答的问题。按理说它应该很快被关闭。如果您需要这里的好人的帮助,请尝试将细节归零:告诉我们您使用什么机制进行客户端/服务器通信,哪个动作由哪个事件触发,以及哪个预期结果没有发生.虽然对双方来说都有些乏味,但可以通过将这样的大问题零碎地提供给 SO 人群来解决。
  • 感谢您的反馈,我已经编辑了帖子,希望能让我遇到的问题更明显,更直接的问题。
  • 虽然它冗长而杂乱无章,但我认为这指向了一个特定问题,即对架构的混淆。我会在这里解决这个问题,然后担心技术优缺点的细节。我认为这是一个有效的问题。

标签: java client-server


【解决方案1】:

在不查看技术细节的情况下,我认为退一步查看整体架构将是建设性的。

需要共享什么状态?从上面我猜是游戏板和两个玩家的状态。所以我会把它放在一个服务器进程中。现在客户端进程(每个玩家不同的实例,但相同的可执行文件)只需要连接,移动,并在其他玩家移动时接收新的棋盘信息。

服务器进程包含棋盘、游戏状态等。客户端只需要能够通过绘制由服务器表示的棋盘并处理玩家输入来反映这一点。我认为您需要一台可部署的服务器和一台可部署的客户端,每个用户都有一个单独的实例。

【讨论】:

  • 感谢您的快速回复。你是对的,每个玩家的棋盘和位置需要在客户端之间共享,所以当一个人移动另一个人时,它就会发生。如果我理解正确,你的意思是把所有东西都放到服务器上,棋盘+玩家的当前位置,让客户端简单地包含 setLoc 方法、keylistener 方法并连接到服务器?
猜你喜欢
  • 1970-01-01
  • 2016-02-12
  • 2018-10-20
  • 1970-01-01
  • 2012-05-13
  • 2016-11-07
  • 1970-01-01
  • 1970-01-01
  • 2014-04-05
相关资源
最近更新 更多