Java编程 怎样获得自己在外网的真实ip

Java编程 怎样获得自己在外网的真实ip,第1张

其实就是在外网搞一个服务器,然后用java去访问这个服务器,然后服务器就能获取到你的外网ip,只需要对数据进行解析。服务器可以自己架设或者网上也有很多提供这样服务的网站,如各种的查ip的网站都有显示自己外网ip的功能。下边是个例子,可以直接运行

import javaioBufferedReader;

import javaioInputStreamReader;

import javanetURL;

public class ListIP {

/

@param args

/

public static void main(String[] args) {

// TODO Auto-generated method stub

Systemoutprintln("本机的外网IP是:"+ListIPgetWebIp(">

打开百度搜索,写入本机IP,点一下搜索。

怎么查看自己的真实IP地址

2

搜索结果出来了。这就是真实的IP地址

怎么查看自己的真实IP地址

END

搜狗查看外网IP

1

打开搜狗搜索,输入IP ,点击搜索

怎么查看自己的真实IP地址

END

搜搜查看外网IP

1

打开搜搜搜索,输入IP ,点击搜索

怎么查看自己的真实IP地址

END

360查看外网IP

1

打开360搜索,输入IP ,点击搜索

怎么查看自己的真实IP地址

END

dos下看本机IP

开始菜单 打开运行

怎么查看自己的真实IP地址

输入CMD 按下回车

怎么查看自己的真实IP地址

DOS下输入IPCONFIG 按下回车

怎么查看自己的真实IP地址

本机IP地址出来了

怎么查看自己的真实IP地址

1得到局域网网段,可由自己机器的IP来确定 (也可以手动获取主机IP-CMD-ipconfig /all)

2根据IP类型,一次遍历局域网内IP地址

JAVA类,编译之后直接运行便可以得到局域网内所有IP,具体怎样使用你自己编写相应代码调用便可

代码如下::

package bean;

import javaio;

import javautil;

public class Ip{

static public HashMap ping; //ping 后的结果集

public HashMap getPing(){ //用来得到ping后的结果集

return ping;

}

//当前线程的数量, 防止过多线程摧毁电脑

static int threadCount = 0;

public Ip() {

ping = new HashMap();

}

public void Ping(String ip) throws Exception{

//最多30个线程

while(threadCount>30)

Threadsleep(50);

threadCount +=1;

PingIp p = new PingIp(ip);

pstart();

}

public void PingAll() throws Exception{

//首先得到本机的IP,得到网段

InetAddress host = InetAddressgetLocalHost();

String hostAddress = hostgetHostAddress();

int k=0;

k=hostAddresslastIndexOf("");

String ss = hostAddresssubstring(0,k+1);

for(int i=1;i <=255;i++){ //对所有局域网Ip

String iip=ss+i;

Ping(iip);

}

//等着所有Ping结束

while(threadCount>0)

Threadsleep(50);

}

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

Ip ip= new Ip();

ipPingAll();

javautilSet entries = pingentrySet();

Iterator iter=entriesiterator();

String k;

while(iterhasNext()){

MapEntry entry=(MapEntry)iternext();

String key=(String)entrygetKey();

String value=(String)entrygetValue();

if(valueequals("true"))

Systemoutprintln(key+"-->"+value);

}

}

class PingIp extends Thread{

public String ip; // IP

public PingIp(String ip){

thisip=ip;

}

public void run(){

try{

Process p= RuntimegetRuntime()exec ("ping "+ip+ " -w 300 -n 1");

InputStreamReader ir = new InputStreamReader(pgetInputStream());

LineNumberReader input = new LineNumberReader (ir);

//读取结果行

for (int i=1 ; i <7; i++)

inputreadLine();

String line= inputreadLine();

if (linelength() <17 || linesubstring(8,17)equals("timed out"))

pingput(ip,"false");

else

pingput(ip,"true");

//线程结束

threadCount -= 1;

}catch (IOException e){}

}

}

}

问题引出:

<hr/>

在JSP里,获取客户端的IP地址的方法是:requestgetRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了 Apache,Nagix等反向代理软件就不能获取到客户端的真实IP地址了。如果使用了反向代理软件,用 requestgetRemoteAddr()方法获取的IP地址是:127001或 1921681110,而并不是客户端的真实IP。

经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的 IP,服务器端应用也无法直接通过转发请求的地址返回给客户端。但是在转发请求的>

举例来说,当我们访问口碑网首页hangzhoujsp时,其实并不是我们浏览器真正访问到了服务器上的hangzhoujsp 文件,而是先由代理服务器Nagix去访问hagnzhoujsp ,代理服务器再将访问到的结果返回给我们的浏览器,因为是代理服务器去访问hangzhoujsp的,所以hangzhoujsp中通过 requestgetRemoteAddr()的方法获取的IP实际上是代理服务器的地址,并不是客户端的IP地址。

<hr/>

获得客户端真实IP地址的方法一:

public String getRemortIP(>

if (requestgetHeader("x-forwarded-for") == null) {

return requestgetRemoteAddr();

}

return requestgetHeader("x-forwarded-for");

}

<hr/>

获得客户端真实IP地址的方法二

public String getIpAddr(>

String ip = requestgetHeader("x-forwarded-for");

if(ip == null || iplength() == 0 || "unknown"equalsIgnoreCase(ip)) {

ip = requestgetHeader("Proxy-Client-IP");

}

if(ip == null || iplength() == 0 || "unknown"equalsIgnoreCase(ip)) {

ip = requestgetHeader("WL-Proxy-Client-IP");

}

if(ip == null || iplength() == 0 || "unknown"equalsIgnoreCase(ip)) {

ip = requestgetRemoteAddr();

}

return ip;

}

<hr/>

一般的程序都具备获取用户IP地址的命令 但是我们访问网站有两种一种是我们这种普通用户 一种是使用代理IP上网的用户 下面我来介绍介绍

 

在asp中获取用户IP地址我们最简单的获取方法就是使用

 代码如下  

Request ServerVariables("REMOTE_ADDR")

但是如果用户使用了代理服务器IP地址就不对了 但我们可通过

 代码如下  

Request ServerVariables("REMOTE_ADDR")

结果上面的两个获取IP的方法我们可如下 *** 作

 代码如下  

userip = Request ServerVariables(">

以上就是关于Java编程 怎样获得自己在外网的真实ip全部的内容,包括:Java编程 怎样获得自己在外网的真实ip、关于内网穿透获取访问者真实IP地址的问题、怎么找出真实的IP地址等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存