【问题标题】:2 client + 1 Server game in Android with webserver in PHPAndroid 中的 2 个客户端 + 1 个服务器游戏,带有 PHP 中的网络服务器
【发布时间】:2013-04-15 04:18:45
【问题描述】:

我正在尝试构建一个带有 2 个客户端和 1 个服务器的 Android 应用。设计如下:

  1. 客户端 1 登录。
  2. 客户端 2 登录。

  3. Client 1 通过 MySQL db 输入一些需要服务器验证的文本。

  4. 根据服务器响应,服务器向客户端 2 发送一些结果。

这种情况反复发生,直到游戏结束。

两个客户端都是安卓移动设备。我能够建立 1 个客户端 (Java) + 服务器 (PHP) + MySQL 连接,并且工作正常。但是现在我对如何在我的应用中实现 2 个客户端与同一服务器交互的概念感到困惑。

【问题讨论】:

  • 您遇到了什么问题?它们都应该访问相同的 Web 服务。如果您需要知道哪个是哪个,让他们在每条消息中发送一个唯一令牌 - ANDROID_ID 可以正常工作。
  • php 并不适合这个,但你可能想查找 php 的套接字库,特别是 select() php.net/manual/en/book.sockets.php
  • 感谢您的回复。我是 PHP 新手,所以我不知道如何将响应重定向到特定客户端。我可以从两个客户端访问相同的 Web 服务,并且还会看到 ANDROID_ID 的内容。您是否可以向我指出一些显示客户特定响应的示例代码。
  • RMI与这个问题无关。

标签: java php android client-server


【解决方案1】:

缺少一些重要的用例:

  • 如果连接了两个以上的客户端会怎样?
  • 客户 1 是如何知道客户 2 的以及他如何与他开始游戏的?
  • 如果其中一个客户端断开连接会怎样?

通常这些用例的答案表明你的服务器有状态,至少你需要处理登录客户端的状态和活跃游戏的状态。

您可以使用 PHP 和 MySQL 来实现它,但您可能会发现自己大部分时间都在处理与架构相关的问题,而不是添加新功能。 我建议选择更好的框架,至少是 Servlets。

但是,如果您仍然想在 PHP 中执行此操作并且不回答上述用例:

  • 登录后,启动拉取机制:客户端每隔 x 秒询问服务器是否有信息给他,并根据响应执行适当的操作。
  • 向服务器添加一个响应表,当您有事情要告诉客户端时,将客户端 ID 和响应添加到该表中。
  • 您可能需要一个用于登录用户的表格和一个用于游戏状态的表格。

客户端 1 登录并开始拉取

  • 客户端 1 响应:什么都不做

客户端 2 登录并开始拉取

  • 客户端 1 响应:发送文本
  • 客户端 2 响应:什么都不做

客户端 1 发送文本

  • 客户端 1 响应:什么都不做
  • 客户端 2 响应:结果

客户端 2 发送文本

  • 客户端 1 响应:结果
  • 客户端 2 响应:什么都不做

等等

还有其他方法,但我认为 PHP 在这里不是正确的解决方案。

希望这会有所帮助,亚龙

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-14
    • 2015-07-12
    • 1970-01-01
    • 2011-02-10
    • 2015-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多