【问题标题】:general java server/client tutorial通用 java 服务器/客户端教程
【发布时间】:2010-01-06 23:19:09
【问题描述】:

我正在开发一个多人纸牌游戏,需要客户端相互通信或与通用服务器通信。我以前从未这样做过,所以我需要一些关于如何实现这一目标的指导或教程。

到目前为止,我已经创建了游戏的本地单人版本...

【问题讨论】:

    标签: java sockets client-server


    【解决方案1】:

    Sun 有一个很好的 tutorial on writing a client/server pair 完整的代码示例。

    【讨论】:

    • 作为后续...如果我将对象来回传递给另一个对象(比如说将 Card 对象传递给 Dealer 对象),我是否必须使用序列化?
    • @Ali:当然,尽管如果您要编写自己的协议,您可以只发送一些标识符,如 AS(代表黑桃 A)或 1H(红桃 1)并跳过序列化过程。
    【解决方案2】:

    到目前为止,我已经创建了游戏的本地单人版本...

    太好了,我建议继续玩本地多人版本的游戏(即使它是由同一个“终端”控制的)

    您可以从那里探索RMI 以远程调用这些方法。它应该比创建多人版本和添加网络要简单得多。

    RMI 所做的是抽象网络连接并允许您简化远程对象调用的执行(也就是说,它简化了您必须使用套接字编写自己的协议)

    【讨论】:

    • 哇,我什至都没听说过这个......这看起来确实简单多了......参考我上面关于序列化的评论,RMI 会是实现这个的更简单的方法吗?
    • 其实他们在一起。通过编写自己的协议(如上述答案所示),您可以决定是否使用可序列化对象。 问题(或机会)是您还必须编写指令来调用线路另一端的方法,然后发回结果。使用 RMI(代表远程方法调用),您无需编写逻辑来调用方法或将结果从客户端返回到服务器,只需调用它们即可。关于序列化,一般来说相当简单(您只需实现Serializable 接口)
    【解决方案3】:

    RMI 更复杂。在开始使用 RMI 之前,您需要了解一些概念,例如扩展 Remote、RemoteExceptions 等。此外,运行由 RMI 支持的应用程序需要一些步骤,例如启动 rmiregistry 和设置策略文件。

    如果您是初学者,请先从简单的套接字开始。它们更容易理解,但编码时间有点长。 RMI 更容易编码,但有点难以理解。

    对于套接字:

    TCP Sockets

    UDP and Datagrams

    对于 RMI:

    Simple tutorial to RMI - Really helped me start

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-05
      相关资源
      最近更新 更多