获取IP

转载 2006年05月25日 17:14:00
      如何用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]);
}
}
}

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程序的原始版本,就会得到以下相当无用的结果:

bash$ java code.NsLookup www.sun.com
localhost: 127.0.0.1
我们可以手动寻找本地地址:

try {
InetAddress localhost = InetAddress.getLocalHost();
System.out.println
("localhost: "+localhost.getHostAddress());
System.out.println
("localhost: "+localhost.getHostName());
} catch(UnknownHostException uhe) {
System.err.println
("Localhost not seeable. Something is odd. ");
}
这里是一个输出的例子:

localhost: 192.168.13.15
localhost: crab
本地主机的域名并没有返回完整的该机器的域名,这是因为它取决于该机器的设置。

最后,InetAddress可能会被用来将IP地址转变为这些地址的域名,这对于分析Web日志是很有用的。InetAddress使得开发者们可以轻松的和域名、IP地址打交道,并且使他们可以不必和DNS服务器进行交互。

Java 通过HttpRequest获取请求用户真实IP地址

在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid,nginx等反向代理软件就不能获取到客...
  • xiaokui_wingfly
  • xiaokui_wingfly
  • 2015年05月21日 10:59
  • 28615

Java获取用户ip

Java 如何获取客户端IP呢? 下面是我总结的几种方法:/** * 获取客户端ip地址(可以穿透代理) * * @param request * @ret...
  • hw1287789687
  • hw1287789687
  • 2015年05月31日 21:31
  • 7720

Struts2 action里获取ip地址

Struts2 action里获取想要ip地址,网上找了很多资料,最后通过 org.apache.struts2.ServletActionContext.getRequest().getRemote...
  • limingchuan123456789
  • limingchuan123456789
  • 2013年08月07日 16:01
  • 8654

Android获取如何获取当前手机IP地址

public static String getIPAddress(Context context) { NetworkInfo info = ((ConnectivityManage...
  • aiynmimi
  • aiynmimi
  • 2016年09月22日 18:30
  • 20334

获取来源IP地址

获得客户端真实IP地址的方法一: public String getRemortIP(HttpServletRequest request) { if (request.getHeader(...
  • jason5186
  • jason5186
  • 2012年12月15日 23:23
  • 4535

在Linux上利用python获取本机ip

下面介绍在Linux上利用python获取本机ip的方法. 经过网上调查, 发现大致有两种方法, 一种是调用shell脚本,另一种是利用python中的socket等模块来得到,下面是这两种方法的源码...
  • tao_627
  • tao_627
  • 2015年11月21日 20:04
  • 7341

利用公开接口获取IP信息

在线平台/接口 虽然目前能够提供IP信息查询的平台很多,但是国内最著名的可能还是ip138,但是IP138目前能够提供的IP信息确实太少了,不管是做渗透还是做项目相信大家都不会采用这个查询,目前...
  • ZhongGuoZhiChuang
  • ZhongGuoZhiChuang
  • 2016年09月08日 14:24
  • 3159

Windows bat脚本获取IP

初次接触windows脚本,感觉还不错,主要是可以使用记事本编写,方便!!保存成.bat格式的就可以直接运行!在Windows脚本这篇博客里,我已经写过了输出hello world!这里就给贴个获取当...
  • zl570932980
  • zl570932980
  • 2017年09月01日 17:42
  • 937

JavaScript获取IP的方法

很多时候我们想在客户端(浏览器端)获取到浏览器的IP地址刚刚在网上查了很多,都没有找到解决办法。一些第三方的接口也是过时了的。最后发现搜狐提供了一个JS接口,可以通过它获取到客户端的IP。 ...
  • qq_25821067
  • qq_25821067
  • 2016年12月21日 23:11
  • 813

C++ 获取本机IP地址

bool GetLocalIP(char* ip) { //1.初始化wsa WSADATA wsaData; int ret=WSAStartup(MAKEWORD(2,2)...
  • iamoyjj
  • iamoyjj
  • 2011年05月29日 09:08
  • 89194
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:获取IP
举报原因:
原因补充:

(最多只允许输入30个字)