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

我正在开发同时具有套接字和RMI的游戏.现在,我要启动RMI部分,然后完成套接字部分.我希望能够邀请某人玩(A-> B)并获得回复(B-> A).

你能帮助我吗?

提前致谢.干杯

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

我在想的是A调用了B计算机上远程对象上的方法. B上的服务器询问客户端(也是同一台计算机上的服务器)是否要与A一起玩,获得响应并将其返回给A.就像我说的,我刚刚用tcp和udp套接字实现了这个游戏,现在我必须对RMI做同样的事情.没有两个客户端可以像使用TCP通过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服务器.但是,我不认为这是必要的.

例如,假设您有两个正在尝试玩游戏的客户.该协议可能看起来像这样:

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

因此,它们不需要经常与服务器A或B联系,而是每隔一段时间轮询一次以获取游戏更新等信息.

调用S的方法还可以等待其他玩家,直到有一个玩家时才返回.我认为轮询选项更好,因为这样S便知道A是否停止通话,而A不必担心S崩溃和挂起.

希望这可以帮助.

上一篇:终止Java RMI服务器应用程序


下一篇:java-是否有有效的方法来测试RMI服务器是否已启动?