【问题标题】:UDP Code client server architectureUDP 代码客户端服务器架构
【发布时间】:2011-06-24 01:07:58
【问题描述】:

您好,我在 android 上开发了一款游戏。现在我想在 wifi 或 3G 上玩它。 我有游戏数据包,我想将它从客户端(手机)发送到服务器,然后发送到另一个客户端2(手机)。

我不知道如何用 Java 编写代码以连续将 playPackets 发送到服务器并从服务器连续接收 playPacket 到客户端。

我想我必须使用两个线程,一个用于发送,一个用于接收。

谁能帮我写代码,或者为它编写代码的过程。

提前致谢。

【问题讨论】:

    标签: java android multithreading udp client-server


    【解决方案1】:

    真正意义上的连续,是做不到的。以太网不支持连续的点对点数据流,因为您需要串行电缆或类似 ATM 的东西。

    但是,您可以通过允许隐藏在较高级别的数据中的“突发”来近似连续数据流。无法保证底层网络每分钟能够传输或接收模拟连续数据流所需的最小数据包数。

    UDP 可以支持更高的传输速率,但有一个非常重要的警告:UDP 数据包可以在任何时候被丢弃而不被实际接收。要使用 UDP,您必须非常小心,以免丢失一些数据包或无序传送数据包不会打乱您的游戏状态。

    如果您确定可以接受 UDP 的限制,Sun / Oracle has a good introductory tutorial here

    【讨论】:

    • 巴克:谢谢你的建议。这是我的学习项目,所以我不介意丢失一些数据包。 Sun/Oracle 有一个很好的介绍性教程的链接很有用,但那里给出的发送数据包的代码是一一对应的。我需要像聊天系统这样的代码。两个客户端可以同时发送消息,同时接收。
    • @GameBuilder,发送一个数据包和发送两个数据包的唯一区别是您再次执行相同的操作(无需再次打开套接字)。
    【解决方案2】:

    据我了解,您需要的是一种在不干扰线程的情况下接收和发送消息的方法。这就是非阻塞 IO 所做的。您可以使用 NIO,因为它在发送或(更重要的是)接收消息时不会阻塞控制线程。

    http://www.cordinc.com/blog/2010/08/java-nio-server-example.html http://download.oracle.com/javase/1.4.2/docs/guide/nio/example/index.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-22
      • 2012-01-04
      相关资源
      最近更新 更多