【问题标题】:Server code that listens for both socket udp and http connections侦听套接字 udp 和 http 连接的服务器代码
【发布时间】:2012-12-19 14:37:50
【问题描述】:

我正在用 Flex 开发游戏。
该游戏有 AIR 和 Web 版本。 AIR 应用程序将使用端口上的 UDP 套接字连接到服务器。 网络版的目的是允许用户在工作时或在阻止某些端口的防火墙/代理后面的计算机上玩。因此,网络将使用端口 80 上的 http 连接连接到服务器。

响应 http 连接的服务器代码将是一个使用 BlazeDS 的 java servlet。 但是,如果你们中的任何人发现 C# 服务器代码(webservices 或其他)更容易解释,那就没问题了。 响应 UDP 请求的服务器代码将是一个侦听套接字连接的简单类。

我的问题是我不知道如何将 UDP 和 http 代码放在一起。如果有 5 个 AIR 客户端和 5 个 Web 客户端,它们都需要在服务器中的某个公共集合变量中相遇,以便我可以使用最新信息更新所有客户端。 谁将实例化监听套接字的类?什么时候?

总结一下:
1.我需要一个专用的服务器来实现我想要的吗?
2. 谁将实例化 udp 处理类以及何时实例化?
3. 是否可以将 udp 处理类和用于 http 连接的 servlet 保持在一起?如果没有http,我什至不需要tomcat。但是 http 和 udp 代码需要保持在一起,这样我才能更新玩家集合。是否可以实例化 UDP 处理类并告诉它在 servlet 部署在服务器上时侦听套接字......或类似的东西?

欢迎任何建议。
在此先感谢,
米哈

【问题讨论】:

    标签: c# java apache-flex blazeds


    【解决方案1】:

    http 和 udp 代码需要保持在一起

    不,他们没有。它们是游戏数据的传输机制,因此它们应该是透明的。您的 UDP 和 HTTP 服务器应该连接到您的游戏后端,具体方式取决于您。它可以在内存中,直接从您的后端代码使用 HTTP 和 UDP(套接字)模块,或者它可以使用某种服务(因此您可以让其他通道与同一后端通信)。

    此游戏后端不直接连接到用户,而只与 UDP 和 HTTP 模块对话。

    然后,您从这个后端处理从 HTTP 和 UDP 收到的消息,并通过同一通道发送响应。

    例子:

    1. AIR-client 1 向 UDP 服务器发送有效的登录消息。
    2. UDP 服务器将登录消息转发到游戏后端。
    3. 游戏后台向UDP服务器返回成功结果消息
    4. UDP 服务器将结果消息转发给 AIR 客户端 1。

    示例 2:

    1. 现在,恰好已经登录的 HTTP 客户端 1 请求所有当前登录的用户。它通过 HTTP 向 HTTP 服务器请求。
    2. HTTP 服务器将此请求转发到游戏后端。
    3. 游戏后端向 HTTP 服务器返回信息
    4. HTTP 服务器向客户端返回响应。

    【讨论】:

      猜你喜欢
      • 2017-09-03
      • 1970-01-01
      • 1970-01-01
      • 2016-11-19
      • 2017-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多