【问题标题】:How to get listening server port in Java?如何在 Java 中获取监听服务器端口?
【发布时间】:2015-06-12 19:46:48
【问题描述】:

我的应用部署在websphere服务器中,通过java代码,我需要获取服务器的监听端口。

注意: 我正在使用下面的行来获取系统的内部主机名。 InetAddress.getLocalHost().getHostName();

编辑: 我们的服务器在本地端口 30036 和本地主机名上运行。我们无法使用这些主机和端口从外部连接此服务器。我们有单独的公共主机/端口用于外部连接。但在我们的场景中,我们希望通过 java 代码访问在同一台服务器上运行的服务。有什么方法可以动态获取这个内部端口?

【问题讨论】:

标签: java sockets server inetaddress


【解决方案1】:

您应该能够在您的服务方法(获取、发布、服务等)中访问request.getLocalPort()。这将告诉您请求来自哪个端口。有可能它在某个地方的路由过程中发生了变化,并且服务器正在侦听的端口并不是客户端所知道的,但如果是这种情况,服务器绝对无法知道这一点。

【讨论】:

  • request.getLocalPort() 将返回客户端可以连接的外部端口。我的要求是获取正在侦听的服务器的内部端口号。
  • 你有理由相信这两者是不同的吗?就像,我不明白获得一个内部端口有什么用——唯一真正重要的是客户端连接的那个——它是一个网络服务器,嗯?
  • 出于安全原因,企业服务器在不同的内部端口和内部主机上运行。外部主机和外部用于连接外部客户端,但您不能使用外部主机/端口从同一服务器连接到同一服务器。
  • 那么您的网络设置与我的(世界上最有价值的 600 家公司之一)完全不同。出于“安全原因”在内部端口上运行实际上是零逻辑意义。如果用户可以连接,则用户可以连接,简单明了。
  • 混淆了“request.getLocalPort()”和“request.getServerPort()”。看起来“request.getLocalPort()”提供了正确的端口。
猜你喜欢
  • 2012-04-09
  • 1970-01-01
  • 1970-01-01
  • 2016-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-07
  • 2012-08-11
相关资源
最近更新 更多