当前位置: 首页 > 面试题库 >

java rmi -Djava.rmi.server.hostname = localhost仍然打开监听0.0.0.0的套接字

贝研
2023-03-14
问题内容

我使用 -Djava.rmi.server.hostname = localhost
选项使rmi仅在localhost上侦听,但netstat显示套接字在 0.0.0.0 上侦听。

奇怪的是,RMI RenewClean线程使用本地主机显示它。例如RMI RenewClean- [localhost:59357]

我假设如果设置 -Djava.rmi.server.hostname = localhost, 则它应该仅在127.0.0.1上进行侦听

我是否误解了java.rmi.server.hostname的控件


问题答案:

我假设如果设置-Djava.rmi.server.hostname = localhost,则它应该仅在127.0.0.1上进行侦听

没有。

我是否误解了java.rmi.server.hostname的控件?

是。java.rmi.server.hostname与远程对象侦听的IP地址无关。那是由RMIServerSocketFactory.

要更正我书中另一个引用中的错误引用(后来删除):

java.rmi.server.hostname:主机名字符串;默认值是本地主机的IP地址,其格式为“点分四进制”,当导出远程对象时,该IP地址将嵌入到此JVM创建的远程存根中。这可用于控制由多宿主主机导出的RMI服务器的有效IP地址。该属性在JVM的生命周期中仅读取一次。[1]

为了对此进行扩展,它还可以用于控制由NAT设备后面的主机导出的RMI服务器的有效IP地址(如客户端所示)。它不一定与本地主机有任何关系,例如在NAT情况下,它可以是主机名,点分四进制的IPv4地址或IPv6地址。

[1] Pitt&McNiff, java.rmi,《远程方法调用指南》, Addison Wesley 2001,第258页。



 类似资料:
  • ap.onSocketOpen(CALLBACK) 监听 WebSocket 连接打开事件。 代码示例 <script src="https://gw.alipayobjects.com/as/g/h5-lib/alipayjsapi/3.1.1/alipayjsapi.inc.min.js"></script> <style> .output{ display:block; max-width

  • 问题内容: 我正在学习angularJS书籍中的教程,并且必须设置服务器。这是server.js文件: 我收到此错误: 我已经知道,错误EACCES意味着我没有访问端口80的权限,但是我不知道如何解决此问题。任何帮助,不胜感激! 问题答案: 如果需要在端口80上运行服务器,则应使用反向代理(如nginx),该代理将在特权端口上使用系统帐户运行,并将请求代理到在非特权端口(> 1024)上运行的No

  • 问题内容: 对于linux c编程原始套接字,这是一个快速的问题。如果我只想使用原始套接字来监听任何接口,我是否真的必须绑定到ip地址或接口来监听流量?据我了解,我觉得我应该能够只调用sock();。然后启动recvfrom()流量。也许我错了,但是我看过一些不使用它的程序。 问题答案: 没错,您唯一需要做的就是打电话给then 。不过请注意,使用收听存在一些限制。 如果您不是在“发送后忘记”的基

  • 我正在mac电脑上使用和。我发现将绑定到而不是。默认情况下,也将绑定到此地址。我仍然可以通过。但是对于,默认设置(例如0.0.0.0:4000)似乎需要访问Internet。没有Internet,我无法运行。它是一只小虫子吗? 我也使用流浪汉。我已设置端口转发(8080)= 有人能解释0.0.0.0、127.0.0.1和localhost?之间的区别吗?有人能解释为什么差异会导致这个问题吗?

  • 我正在用C语言编写一个服务器,使用POSIX sockets api。 这是作为GUI应用程序的一部分运行的,它需要能够停止和启动服务器监听和向客户端发送数据。 服务器的主要部分基本上是这样的(我排除了很多代码,因为其中一些与这个问题无关。) 换句话说: 让套接字监听连接 为select()调用设置fds 使用stdin调用select(),所有连接客户端套接字,以及获取从GUI发送的任何数据的管

  • 我正在使用Netty编写Java游戏服务器。我可以从本地主机成功连接客户端,但无法从远程PC连接。util中没有显示侦听套接字。我是不是遗漏了什么?