【问题标题】:Is it possible to ask server side to execute a method without using RMI?是否可以在不使用 RMI 的情况下要求服务器端执行方法?
【发布时间】:2016-03-07 05:01:49
【问题描述】:

因为我没有 Java Web 服务器,所以无法尝试。我的想法是通过套接字向服务器发送一个数字。发送的数量将取决于用户的响应或要求。

例如: 考虑一个井字游戏。假设用户输掉了比赛,我希望用户输入yes 重播或no 退出。

如果用户输入yes,程序将向套接字的outputstream写入一个数字(例如1)。现在,服务器使用inputstream 接收数字并将其存储在一个整数变量中。如果发现输入的数字是1,则游戏重新开始。将有一些方法处理收到的这些数字。

是否可以通过这种方式与服务器通信并调用远程方法?

如果是,为什么 RMI 可以通过编码来完成(很容易)?

【问题讨论】:

  • 什么意思,您“没有”Web 服务器? Spring Boot 和类似工具使启动变得轻而易举。
  • @chrylis 我无法配置 Tomcat。
  • Spring Boot 帮你搞定!
  • Spring Boot 是不是像 Xampp 这样的软件?

标签: java sockets rmi


【解决方案1】:

是否可以与服务器通信

是的。

并调用远程方法

没有。服务器正在本地调用该方法。您只是向它发送一个数字,告诉它该做什么。这里没有远程方法调用。

当 RMI 可以通过编码(很容易)完成时,为什么要设计它?

RMI 提供了直接调用远程方法的语法,无需担心:

  • 连接
  • 方法编号
  • 请求和响应的电线规范
  • 编组参数
  • 解组响应
  • 将一些响应变成异常
  • 确保所有响应都遵循异常语义
  • 动态类加载
  • ...

您当然可以自己重新实现所有这些,当然 RMI 也用 Java 实现,但不要低估范围或难度。

【讨论】:

  • 我的想法是通过套接字向servef发送一个数字。服务器接收到这个,一个方法将测试这个数字并据此调用一个方法。这不行吗?
  • 当然可以。没有人另有说法。这就是 RMI 在幕后所做的,以及许多其他事情。
  • 好的。最后一个疑问。在服务器中,通常一个循环会一直运行,等待来自用户的连接请求。因为,这个循环永远运行,它不会导致服务器上的任何 stackoverflow 异常(因为它是一个无限循环)?
  • @MathewsMathai 我不明白你为什么要问。 递归 导致堆栈溢出。无限循环不会。
猜你喜欢
  • 1970-01-01
  • 2018-09-15
  • 2022-10-17
  • 1970-01-01
  • 2013-07-27
  • 2015-01-28
  • 2015-10-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多