如何用Java获得一个域名的IP地址呢?提供这个功能的类叫做java.net.InetAddress。我们假设现在有这样一个域名,它用一个静态的 getByName来重新获得一个InetAddress,然后得到可以读出的IP地址。下面的代码是非常基本的命令行。
import java.net.InetAddress;
import java.net.UnknownHostException;
public class NsLookup {
static public void main(String[] args) {
try {
InetAddress address = InetAddress.getByName(args[0]);
System.out.println(args[0]+"
: "+address.getHostAddress());
}
catch(UnknownHostException uhe) {
System.err.println("Unable to find: "+args[0]);
}
}
}
其实这里还有一个我之前困扰我一年多的问题,大家学JAVA的时候可能和我一样,不理解static public void main(String[] args) 里面的String[] args到底有什么用,而不写的话又出错,道理可能我讲的不是很好,但我知道该怎么用它,其实我觉得它就是个主函数输入窗口,举个例子,你在javac 后,java 命令就是运行了,这时候如果你输入一些字符,ok,它们就会在你运行的程序上出现,其实就是通过String[] args这个来的,所以上面的代码中输出的www.sun.com: 192.18.97.241,前面的 www.sun.com:就是捕获你输入的网址的字符串来的。
InetAddress也可以通过使用getAddress()来获得IP地址,但是它的返回值是一个4个字节的数组。因此尽管getAddress()在获得IP方面是有用的,但却不适于用来输出。
上面的命令的输出结果看起来就是这样:
bash$ java code.NsLookup www.sun.com
www.sun.com: 192.18.97.241
有时一个域名会包含不止一个IP地址,比如微软的Web服务器,这是为了保持负载平衡。InetAddress提供了一种可以得到一个域名的所有IP地址的方法。让我们来考虑以下代码:
import java.net.InetAddress;
import java.net.UnknownHostException;
public class NsLookup {
static public void main(String[] args) {
try {
String name = args[0];
InetAddress[] addresses = InetAddress.getAllByName(name);
for(int i=0; i<addresses.length; i++) {
System.out.println(name+"["+i+"]
: "+address.getHostAddress());
}
} catch(UnknownHostException uhe) {
System.err.println("Unable to find: "+args[0]);
}
}
}
对于www.sun.com,将会输出:
bash$ java code.NsLookup www.sun.com
www.sun.com[0]: 192.18.97.241
然而,对于www.microsoft.com,将会输出:
bash$ javad code/NsLookup.java
www.microsoft.com
www.microsoft.com[0]: 207.46.230.218
www.microsoft.com[1]: 207.46.197.101
www.microsoft.com[2]: 207.46.230.229
www.microsoft.com[3]: 207.46.197.113
www.microsoft.com[4]: 207.46.230.219
www.microsoft.com[5]: 207.46.230.220
www.microsoft.com[6]: 207.46.197.102
由于InetAddress,localhost必须要特别处理。如果字符串“localhost”直接进入NsLookup
分享到:
相关推荐
Ant打包jar,参数名变为无意义的arg0,arg1,Java代码提示参数名称无意义 Class not found: org.eclipse.jdt.core.JDTCompilerAdapter 让ant使用Eclipse的打包功能. 使用ant打包的jar,变量变成如下无意义的arg0,arg1. ...
"java_argmin"标签可能指的是在Java中实现的寻优算法,如最小化函数(argmin),这在HMM的Viterbi算法中尤为关键。Viterbi算法用于找到最有可能的隐藏状态序列,即给定观测序列下模型的最优解释。 总的来说,这个...
《ArGIS符号库在土地利用总体规划中的应用》 在地理信息系统(Geographic Information System,简称GIS)中,符号库扮演着至关重要的角色,它决定了地图的视觉表达效果和信息传达的准确性。本资源"ArGIS符号库土地...
在Java应用程序的启动过程中,我们经常需要使用各种参数来控制JVM的行为,优化程序性能,或者解决特定问题。这些参数被称为Java启动参数,通常以“-”或“--”开头。这篇博客将探讨一些Java启动参数的示例,帮助你更...
`arg_parser`是一个用于解析命令行参数的C++库,同时也支持C语言接口。这个库在软件开发中扮演着重要角色,特别是在需要通过命令行接口与用户交互的工具或服务中。下面我们将深入探讨`arg_parser`的核心概念、功能、...
通过这种方式,我们可以在不修改Spring Boot应用源代码的前提下,利用`javaagent`和`premain`方法实现对应用的动态增强,这对于开发工具、性能分析、调试等场景非常有用。需要注意的是,由于`premain`是在JVM启动时...
1. **命名丢失**:由于Java字节码不保存原始变量和方法名,反编译工具通常会使用默认的命名,如arg0、arg1等,这可能会影响代码的可读性。 2. **注释丢失**:字节码中不包含源代码的注释,所以反编译后的代码将没有...
"argtable-1.4" 是一个...总之,argtable-1.4是C程序员处理命令行参数的强大工具,它的易用性和灵活性使其在各种项目中都得到了广泛应用。通过熟练掌握argtable,开发者可以更加专注于程序的核心功能,提高开发效率。
function I = argmin(X, DIM)
标题中的"matlab开发-ipfarg1arg2arg3arg4"表明这是一个关于使用MATLAB进行软件开发的项目,其中`ipfarg1arg2arg3arg4`可能是自定义函数或程序的一部分,可能用于处理特定的数据或执行特定的操作。在MATLAB中,函数...
### 淮海工学院计算机工程学院实验报告:利用MVC模式开发Java应用程序 #### 一、实验背景与目的 本实验旨在通过淮海工学院计算机工程学院的《程序设计方法学》课程,让学生深入理解并实践MVC(Model-View-...
《ArGIS符号库在土地利用总体规划中的应用》 在地理信息系统(GIS)中,符号库是至关重要的组成部分,它能够帮助我们以可视化的方式理解和解析地理数据。本文将深入探讨“ArGIS符号库土地利用总体规划图.rar”这一...
// 设置JavaBridge服务地址 define('JAVA_HOST', 'localhost'); // 本地IP define('JAVA_PORT', 8080); // 端口号 // 初始化JavaBridge $jb = new JavaBridge(JAVA_HOST, JAVA_PORT); // 调用Java方法示例...
Java定时任务是应用程序中不可或缺的一部分,它允许程序在特定时间执行特定操作,无需用户干预。在JDK 1.3及以后的版本中,`java.util.Timer`类提供了基础的定时任务支持。不过,`Timer`类的功能相对有限,无法精确...
ArcGIS Engine是Esri公司推出的一款强大的GIS开发工具,它允许开发者构建桌面、Web和移动应用程序,以充分利用地理信息的功能。这个“argis engine教程”压缩包包含了五个文档,分别从不同的角度介绍了ArcGIS Engine...
在C语言中,`va_arg`是一个非常重要的函数宏,它是可变参数列表(Variable Argument List,也称为 variadic function)处理的关键组成部分。标题“va_arg_c_”可能指的是一个文档,专门探讨了如何在C语言中使用`va_...
Dispatch pdf = Dispatch.get(doc, "ExportAsFixedFormat").arg("C:\\path\\to\\output\\document.pdf").arg(17).arg(true).arg(false).arg(false).arg(false).arg(false).arg(false).arg(0).call().toDispatch();...
《SVM分类器在中文文本处理中的应用及arg0数据集详解》 支持向量机(Support Vector Machine,简称SVM)是一种强大的机器学习模型,尤其在文本分类领域展现出卓越性能。"TK1.2-ARG0vsARG1.tar.gz_svm分类器_中文...
根据给定文件的信息,本文将详细介绍25个经典Spark算子的Java实现,并结合详细的注释及JUnit测试结果,帮助读者更好地理解Spark算子的工作原理及其应用方式。 ### Spark算子简介 在Apache Spark框架中,算子是用于...
《Python库arg_ranker-2.6:提升后端开发效率的利器》 在现代软件开发中,Python凭借其简洁的语法、丰富的库支持以及强大的社区...在日常的Python编程工作中,合理利用`arg_ranker`,无疑将使您的代码更加专业和高效。