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

时间:2011-12-31 01:38:06

标签: java rmi

我正在开发一个带有套接字和RMI的游戏。套接字部分现在完成我正在启动RMI部分。我希望能够邀请某人玩(A-> B)并获得回复(B-> A)。

你能帮助我吗?

提前致谢。干杯

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

我在想的是A在B的计算机上调用远程对象上的方法。 B上的服务器要求客户端(也是同一台计算机中的服务器)如​​果想要玩A获取响应并将其返回给A.就像我说我刚刚用tcp和udp套接字完成了这个游戏,现在我必须对RMI做同样的事情。两个客户端没有办法直接通信,就像通过TCP连接一样,使用RMI,是吗?

1 个答案:

答案 0 :(得分:4)

  

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

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

例如,假设您有2个客户都试图玩游戏。协议可能如下所示:

  1. A与服务器S联系。服务器存储地址A,然后向A返回等待其他玩家类型的消息。
  2. A然后每隔几秒钟与S联系,看看其他玩家是否已经出现。
  3. B然后联系S并在A和B之间开始游戏.S向B返回开始游戏消息.S将某种Game对象存储在其内存(和/或磁盘)上,跟踪进度。游戏。
  4. 下次A与服务器联系时,它也会收到一条开始游戏消息。
  5. 因此,不是服务器需要联系A或B,而是经常轮询以获得游戏更新等。

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

    希望这有帮助。