侦听套接字udp和http连接的服务器代码

时间:2012-12-19 14:37:50

标签: c# java flex blazeds

我正在开发Flex游戏。
这个游戏有AIR和Web版本。 AIR应用程序将使用端口上的UDP套接字连接到服务器。 Web版本的目的是允许用户在工作时或在某些阻止某些端口的防火墙/代理后面的计算机上播放。因此,Web将使用端口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部署在服务器上时监听套接字......或类似的东西?

欢迎任何建议 提前谢谢,
米哈

1 个答案:

答案 0 :(得分:1)

  

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

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

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

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

示例:

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

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