java 怎么根据IP地址获取主机名

java 怎么根据IP地址获取主机名,第1张

//看看这个代码如何。

import javanetInetAddress;

import javanetUnknownHostException;

import javautilProperties;

import javautilSet;

public class TestSystemProperties {

public static void main(String [] args){

InetAddress netAddress = getInetAddress();

Systemoutprintln("host ip:" + getHostIp(netAddress));

Systemoutprintln("host name:" + getHostName(netAddress));

Properties properties = SystemgetProperties();

Set<String> set = propertiesstringPropertyNames(); //获取java虚拟机和系统的信息。

for(String name : set){

Systemoutprintln(name + ":" + propertiesgetProperty(name));

}

}

public static InetAddress getInetAddress(){

    try{

     return InetAddressgetLocalHost();

    }catch(UnknownHostException e){

Systemoutprintln("unknown host!");

}

    return null;

}

public static String getHostIp(InetAddress netAddress){

if(null == netAddress){

return null;

}

String ip = netAddressgetHostAddress(); //get the ip address

return ip;

}

public static String getHostName(InetAddress netAddress){

if(null == netAddress){

return null;

}

String name = netAddressgetHostName(); //get the host address

return name;

}

}

这个代码简单明了,就是调用现成的InetAddress类

已知ip地址,查主机名最简单的方法就是使用命令,以下是两种方法:

1、使用ping命令加上参数-a的方法反解析IP地址,可以得到主机名。例如:ping -a >

可以使用 InetAddressgetLocalHost(),代码如下:

import javanet;

public class App {

public static void main(String[] args) throws UnknownHostException {

InetAddress local = InetAddressgetLocalHost();

Systemoutprintln("计算机名:" + localgetHostName());

Systemoutprintln("IP:" + localgetHostAddress());

}

}

域名系统(DNS)解析主机名的过程涉及多个步骤,可以简单地描述如下:

首先,客户端的 *** 作系统将发送一个DNS查询请求到本地DNS服务器。本地DNS服务器通常由Internet服务提供商(ISP)提供,也可以是企业的专用服务器。

如果本地DNS服务器具有所请求主机名的IP地址的缓存记录,则它将返回该记录给客户端,否则本地DNS服务器将自己向其他DNS服务器发出查询请求。

如果请求的主机名是顶级域名(例如com、net、org等)下的域名,则本地DNS服务器将询问根域名服务器,根域名服务器将返回顶级域名服务器的地址。

本地DNS服务器然后向顶级域名服务器发出查询请求,以获取下一级域名服务器的地址。例如,如果查询的主机名是examplecom,则本地DNS服务器将向com域名服务器发出查询请求。

com域名服务器将返回管理examplecom域的DNS服务器的地址。本地DNS服务器然后向examplecom域的DNS服务器发出查询请求。

如果examplecom域的DNS服务器有所请求的主机名的IP地址的记录,则它将返回该记录给本地DNS服务器。本地DNS服务器将在其缓存中存储该记录,以备将来使用,并将其返回给客户端。

如果examplecom域的DNS服务器没有所请求的记录,则它将继续向上级DNS服务器进行查询,直到找到包含所请求记录的服务器为止。

一旦找到所请求的IP地址,本地DNS服务器将返回该地址给客户端,并且客户端将使用该地址与所请求的主机建立连接。

总之,DNS解析主机名的过程需要经过多次查询和响应的交互,这些交互最终将主机名转换为其对应的IP地址。

获取主机名可以使用下面两种方法:

string

machineName

=

EnvironmentMachineName;

(System

命名空间下)

string

hostName

=

DnsGetHostName();

(SystemNet命名空间下)

获取IP地址,(可能需要IPv4

IPv6,

有时主机环境会存在多个ip地址)

DnsGetHostAddresses(hostName)可获得IPAddress[]

列表

或者

IPHostEntry

hostEntry=DnsGetHostEntry(hostName);

hostEntryAddressList[]

也可以获取IP

地址列表

接下来你可以使用自己的方法筛选获取想要的那个ip地址

比如IPv4

可以使用

hostEntryAddressList[i]AddressFamilyToString()

==

"InterNetwork"

作为判断条件;

IPv6可以使用hostEntryAddressList[i]AddressFamilyToString()

==

"InterNetworkV6"

或者使用

hostEntryAddressList[i]IsIPv6LinkLocal

来判断

示例代码网上也能搜的到。

以上就是关于java 怎么根据IP地址获取主机名全部的内容,包括:java 怎么根据IP地址获取主机名、如何通过netbios协议用IP查主机名、Java如何获取本地计算机的IP地址和主机名等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9317799.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存