gpt4 book ai didi

java - 如何从服务器调用客户端的方法?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:23:55 26 4
gpt4 key购买 nike

我正在开发一款同时使用套接字和 RMI 的游戏。套接字部分已经完成,现在我开始 RMI 部分。我希望能够邀请某人玩 (A->B) 并得到响应 (B->A)。

你能帮帮我吗?

提前致谢。干杯

编辑: 我一直在研究,目前我也在将客户端实现为远程对象(定义接口(interface)并实现它)。我认为这叫做回调。我走在正确的道路上吗?

我在想的是 A 在 B 的计算机上调用远程对象的方法。 B 上的服务器询问客户端(它也是同一台计算机中的服务器)是否想与 A 一起玩得到响应并将其返回给 A。就像我说的,我刚刚用 tcp 和 udp 套接字完成了这个游戏,现在我必须对 RMI 做同样的事情。两个客户端无法像使用 RMI 通过 TCP 连接那样直接通信,是吗?

最佳答案

I've been researching and i'm currently implementing the client as a remote object as well (defining the interface and implementing it). I think it's called callback. Am I on the right path?

RMI 通常实现为客户端和服务器。客户端在服务器上进行调用,服务器返回一个可以在客户端上使用的对象。阅读评论后,根据您描述问题的方式,它们是正确的,您需要使客户端也成为 RMI 服务器。但是,我不认为这是必要的。

例如,假设您有 2 个客户都在尝试玩游戏。该协议(protocol)可能看起来像这样:

  1. A 联系服务器 S。服务器存储地址 A,然后返回等待另一个玩家类型的消息给 A。
  2. 然后 A 每隔几秒联系一次 S,看看其他玩家是否出现。
  3. 然后 B 联系 S,A 和 B 之间开始游戏。S 向 B 返回开始游戏消息。S 在其内存(和/或磁盘)中存储某种游戏对象,该对象跟踪游戏的进度游戏。
  4. 下次 A 联系服务器时,它还会收到开始游戏的消息。

因此,服务器不需要联系 A 或 B,而是时不时地进行轮询以获取游戏更新等。

对 S 的方法调用也可以等待其他玩家,直到有一个玩家才返回。不过,我认为轮询选项更好,因为这样 S 就知道 A 是否停止调用,并且 A 不必担心 S 崩溃和挂起。

希望这对您有所帮助。

关于java - 如何从服务器调用客户端的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8685688/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com