在 RMI 期间知道端口号

2024-03-16

有没有办法在RMI过程中同时知道客户端和服务器的端口号?

当在 RMI 过程中向客户端返回结果时,客户端下次请求该结果时,客户端和服务器之间的对话是否会在与上次相同的端口上,当服务器自第一个结果返回后一直在运行时或新的端口已创建?

例如 :

// call to a remote method add
     addServerIntf.add(d1,d2)
// after this call i get the added result

// again call the add method by again starting the client
    addServerIntf.add(d1,d2)
// I get the result back as usual

在两次不同的调用中,客户端和服务器的端口号是否保持不变?

我的客户端程序在输入像 java AddClient localhost 100 200 这样的命令后退出,服务器上的方法返回300,客户端退出。下次我使用 java AddClient localhost 19 100 再次启动客户端时。现在请求将从与之前发送的端口相同的端口发送,并且服务器会在同一端口上接收请求吗?或者情况和我刚才写的不一样?


有没有一种方法可以知道客户端和客户端的端口号 RMI 期间的服务器?

如果我没有理解错的话,我认为在 RMI 会话期间没有办法知道端口号。

如果您有一个与默认 RMI 注册表服务器 1099 端口不同的端口号,则必须在服务器类和客户端类上设置它,因为,Oracle RMI 页面 http://docs.oracle.com/javase/1.5.0/docs/guide/rmi/hello/hello-world.html报告:

如果注册表将在 1099 以外的端口上运行,您需要 在对 LocateRegistry.getRegistry 的调用中指定端口号 在服务器和客户端类中。例如,如果注册表是 在此示例中,在端口 2001 上运行,调用getRegistry在里面 服务器将是:

Registry registry = LocateRegistry.getRegistry(2001);

and:

该客户端首先通过调用来获取注册表的存根 指定主机名的静态 LocateRegistry.getRegistry 方法 在命令行上。如果未指定主机名,则使用 null 作为 指示应使用本地主机地址的主机名。

然后,我的结论是,你无法通过一种方法知道RMI会话的端口号(你可以检查RMI API以获取详细信息),除非你必须设置它,如果它与默认的RMI不同注册表服务器 1099 端口,因为您必须在 RMI 会话开始时知道它。

试想一下:如何获得这个端口号?联系服务器还是客户端?例如,如果您请求位于特定服务器中的页面,该服务器正在侦听端口 81(而不是默认的 80 端口),则您需要提前连接到该特定服务器的端口号,并与其联系,例如:http://192.168.1.1:81。然后,在 RMI 会话期间,您必须提前知道 RMI 注册表端口。

检查这个page http://www.developer.com/java/other/article.php/3455311/Understanding-Java-RMI-Internals.htm了解详情。

当 RMI 期间将结果返回给客户端时,下次 客户端请求结果,客户端和客户端之间的对话将 服务器与之前的服务器处于相同的端口,当服务器已 自第一个结果返回或创建新端口以来正在运行?

当结果返回给客户端时,客户端和服务器之间的对话应该共享在同一个RMI注册表端口上,否则,如果客户端中设置的RMI注册表端口与服务器RMI注册表端口不同(如果我没有忘记了),代码会抛出一个RemoteException,当 RMI 进程中发生故障时可能会发生这种情况。

UPDATE

现在我看到你更新的问题。

在2个不同的调用中客户端和服务器的端口号 保持不变 ?

它应该是相同的 RMI 注册表服务器端口。当程序在第一次调用后退出时,程序将关闭套接字连接。下次启动程序时,RMI 注册表端口应该相同。否则,您的程序应该引发异常,或者,当您将参数传递给程序时,您会得到意外的结果。如果我理解的话,您的客户端程序只需调用服务器上的 sum 方法。第一次结果之后,下次启动程序时,您会得到不同的结果吗?如果不是,我认为 RMI 注册表端口是相同的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 RMI 期间知道端口号 的相关文章

随机推荐

  • 这段代码可以防止SQL注入吗?

    背景 我已签约分析现有数据提供者 并且我知道以下代码有错误 但为了指出它有多糟糕 我需要证明它容易受到 SQL 注入的影响 Question 什么 Key 参数可能会破坏PrepareString函数并允许我执行DROP陈述 代码片段 Pu
  • 如何访问网络文件?

    using namespace std ofstream myfile myfile open Z ABC TXT fails Z is a network drive myfile open C Temp ABC TXT OK myfil
  • 为 JavaScript 模块编写 scalajs Facade 时如何使用 JSImport

    我使用 JSImport 编写了一个外观 并且它有效 不幸的是 我通过反复试验找到了解决方案 并且我不完全理解为什么这个特定的解决方案有效 但我尝试过的其他解决方案却无效 背景 我从一个使用 sbt 构建的工作项目开始 它是一个单页应用程序
  • 有没有办法以正确的顺序生成 Liquibase 数据?

    我正在使用 Liquibase 对现有数据库进行版本控制 所以我使用 liquibase logLevel debug driver com mysql jdbc Driver classpath lib mysql connector j
  • 合并删除远程分支列表下的分支后仍然看到Git Branch

    我正在开发一个自动化套件 我在其中创建了两个分支 p2pOnOff 和 release 分支 后来我将它们合并到 master 并使用以下命令删除它们 git branch d p2pOnOff git push origin p2pOnO
  • 删除元组列表中包含 nan 的元组 - Python

    我有一个很长的元组列表 想要使用 Python 删除其中包含 nan 的任何元组 我目前拥有的 x 录音开始 0 nan 4 nan 7 事件标记1 150 我正在寻找的结果 x 录音开始 0 事件标记1 150 我尝试过使用 np isn
  • 将 fb-contrib 库与 Gradle 的 FindBugs 插件结合使用

    是否可以整合Facebook 贡献 http fb contrib sourceforge net 带有 Gradle 的库FindBugs 插件 http www gradle org docs current userguide fin
  • 在Java中,为什么Stack是一个具体类,而Queue是一个接口?

    Queue 的哪一个子类是 普通 队列 1 java util Stack 是 Java 1 0 的遗留类 它早于 Collections 框架很多年 坦率地说 它是一个例子horrible多方面的设计 一切都不是事情应有的样子 主要问题是
  • 为什么 numpy.var 是 O(N) 空间?

    我有一个 13GB 的数组 我打电话numpy var对其进行计算方差 然而 它又分配了约 13GB 来执行此操作 为什么需要 O N 空间 或者我打电话numpy var以错误的方式 import numpy as np data pri
  • 打印一个文件中与另一文件中的模式匹配的行

    我有一个超过 40 000 行的文件 file1 我想提取与 file2 中的模式匹配的行 大约 6000 行 我像这样使用 grep 但它很慢 grep f file2 file1 gt out 有没有更快的方法来使用awk or sed
  • 通过线性布局以编程方式设置两个按钮之间的边距

    我如何以编程方式在按钮 regler 和 decommender 之间设置 20dp 的边距 这是我的工作 LinearLayout lytmain new LinearLayout Mcontex lytmain setOrientati
  • 如何传递特征矩阵行引用以将其视为向量?

    我有一个对向量引用进行操作的函数 例如 void auto bias const Eigen VectorXf v Eigen Ref
  • Vim:打开文件后读取模型行?

    我从事各种项目 其中许多项目设置了特定于文件的 vim 设置 我被要求不要在 vimrc 中设置模型行 加载文件后有没有办法加载模型设置 所以如果我用 vim 打开 tmp c int main int argc char argv ret
  • 工具提示气球显示位置(用于错误通知)

    不久前我问了一个与此密切相关的问题 通知用户错误的替代方法 https stackoverflow com questions 2878043 alternative way to notify the user of an error 简
  • ASP.NET MVC 显示成功消息

    这是我从应用程序中删除记录的示例方法 Authorize Roles news admin public ActionResult Delete int id var ArticleToDelete from a in db Article
  • PyQt - 如何打开目录文件夹?

    我搜索了很多 我知道如何打开目录对话框窗口 但我正在寻找的是在Windows操作系统下打开目录文件夹的方法 就像右键单击本地文件夹之一并选择打开一样 有什么建议么 对于 python 3 7 你可以这样做 os startfile path
  • 在c中实现时间延迟

    我不知道如何准确地描述这个搜索 所以我没有运气找到任何东西 S 我需要在 C 中实现时间延迟 例如我想做一些事情 然后等一分钟 然后继续做事情 这有道理吗 谁能帮我吗 在标准 C C99 中 您可以使用time 为此 请执行以下操作 inc
  • 将内存中的图像转换为 Blob [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我内存中有一个图像 类型 java awt Image 我想使用jdk 1 7将其转换为Blob 类型 java sql Blob 我能找
  • 为什么Python的导入不能像C的#include那样工作?

    我实际上已经尝试理解 Python 导入大约一年了 我几乎放弃了 Python 编程 因为它看起来太混乱了 我有 C 语言背景 我认为import工作就像 include 但是如果我尝试导入某些内容 我总是会遇到错误 如果我有两个这样的文件
  • 在 RMI 期间知道端口号

    有没有办法在RMI过程中同时知道客户端和服务器的端口号 当在 RMI 过程中向客户端返回结果时 客户端下次请求该结果时 客户端和服务器之间的对话是否会在与上次相同的端口上 当服务器自第一个结果返回后一直在运行时或新的端口已创建 例如 cal