Java网络指标

时间:2018-12-03 11:47:17

标签: java networking

我尝试检查主机名的IP。

我有两个网络设备

  1. “ A”的指标为1 168.172.1.54
  2. “ B”的指标为2 168.172.1.55

我的主机名是 /////////////////////////////////////////// // Web Client side socket creation code /////////////////////////////////////////// var stompClient = null; function connect() { if (stompClient != null) { stompClient.disconnect(); } var socket = new SockJS(contextPath + '/tracking'); stompClient = Stomp.over(socket); stompClient.connect({}, function(frame) { stompClient.subscribe('/message/send/individual/' + loginUserUk, function(response) { var messageBody1 = JSON.parse(response.body); //process with the response }); }); }

我有一个仅监听168.172.1.55的Web服务器。 (指标2)

如何使用主机名而不是IP地址指定使用度量2?

2 个答案:

答案 0 :(得分:2)

您正在混淆两个级别:

  • DNS级别使用与本地或远程DNS服务器,缓存和/或本地源(例如“ / etc / hosts”)对话的本地解析器库将主机名解析为IP地址。
  • 路由级别基于度量标准在给定IP地址使用的两个或多个网络路由之间进行选择。

您似乎想做的是让DNS解析受到路由指标的影响。这对我来说真的没有意义。这不是应该使用DNS和路由指标的方式。

IMO,做到这一点的“合理”方法是:

  • 使用IP地址而不是主机名(本地)连接到您的Web服务器。 Java网络API允许您使用零代码更改(通常为 1 )来做到这一点。

  • 为两个IP地址使用不同的DNS名称。例如,您可以在“主机”文件中为一个或其他设备添加本地DNS条目。或者,您可以在本地DNS服务器或DNS提供程序中添加条目。

请注意,这并不是Java问题,因为这些机制和解决方案不会在您的Java应用程序中实现,并且同样适用于其他编程语言。


实际上,根据您对另一个答案的评论,我怀疑您问题的一部分可能正在路由。

您的问题似乎是说您的系统在两个不同的网络(A和B)上具有两个设备(NIC)和两个不同的IP地址。

然后,您在注释中说,您无法ping通网络B上的IP,因为其IP在网络A上“不可用”。

这就是问题。如果您在网络A上,并且需要与正在网络B上IP的端口上侦听的服务进行通信,并且数据包没有从A路由到B,则无法正常工作。如果数据包未路由,则通过正确的IP地址或主机名引用服务器都没有关系。

另一方面,如果您尝试从自身ping网络A和B上的主机...应该就可以了。除非您的网络(或虚拟网络)配置确实被弄乱了,否则主机应该能够与其自己的所有IP地址进行通信。

我想您的防火墙可能阻止了ping ...,而不是路由问题。但这也是一个错误的配置,IMO。


1 ...除非您的代码库已实现为使用IP地址语法显式排除主机名。

答案 1 :(得分:-1)

如果要使用主机名代替ip,则必须具有将主机名解析为ip地址的机制。我首先想到的方法是修改hosts文件。

我实现如下:

首先,修改hosts文件,将以下行添加到hosts文件尾。

168.172.1.55 develop

第二,启动服务器并使用名称168.172.1.55绑定到develop。我使用vertx对此进行模拟:

NetServer server = Vertx.vertx().createNetServer();
server.connectHandler(new Handler<NetSocket>() {
    @Override
    public void handle(NetSocket netSocket) {
        System.out.println(netSocket.isSsl());
    }
});
server.listen(9091,"develop");

Ps:如果要在系统中使用name,则名称服务器可能是更好的选择,例如DNS,Zookeeper,etcd等。