首页 > 作文

外网ip地址查询

更新时间:2023-03-15 00:35:15 阅读: 评论:0

中标普华-织围巾起针

外网ip地址查询
2023年3月15日发(作者:上考)

Java获取IP

在我们记录⼀些⽇志或者⽤户⾏为时,为了之后能⽅便的定位到事件⼈,我们可能需要记录其事件IP地址。主要有是内⽹IP,外⽹IP;以及根据IP

获得相应的地址。

1、概念

2、区别

2.1本机IP地址

127.0.0.1也就是localhost,这是本地ip地址,是只能⽤于本机访问本机的⽹络时使⽤的。

2.2内⽹IP地址

192.168.1.1~192.168.1.255,之类的内⽹ip地址是⽤于局域⽹内相互访问时的ip地址。

是路由器给你分配的⼀个IP地址,只能在局域⽹中使⽤。

2.3外⽹IP地址

返回的是⼀个json对象:

3、IP地址⼯具类(亲测可⽤)

packageUtil;

edReader;

tputStream;

ption;

treamReader;

ortedEncodingException;

LConnection;

dress;

medURLException;

kInterface;

Exception;

;

oder;

ation;

r;

r;

n;

/**

*ip地址⼯具类

*/

publicclassAddressUtils{

/**

*获取本机的内⽹ip地址

*

*@return

*@throwsSocketException

*@throwsSocketException

*/

publicStringgetInnetIp()throwsSocketException{

Stringlocalip=null;//本地IP,如果没有配置外⽹IP则返回它

Stringnetip=null;//外⽹IP

EnumerationnetInterfaces;

netInterfaces=workInterfaces();

InetAddressip=null;

booleanfinded=fal;//是否找到外⽹IP

while(eElements()&&!finded){

NetworkInterfaceni=ement();

Enumerationaddress=tAddress();

while(eElements()){

ip=ement();

if(!LocalAddress()

&&!backAddress()

&&tAddress().indexOf(":")==-1){//外⽹IP

netip=tAddress();

finded=true;

break;

}elif(LocalAddress()

&&!backAddress()

&&tAddress().indexOf(":")==-1){//内⽹IP

localip=tAddress();

}

}

}

if(netip!=null&&!"".equals(netip)){

returnnetip;

}el{

returnlocalip;

}

}

/**

*获取本机的外⽹ip地址

*

*@return

*/

publicStringgetV4IP(){

Stringip="";

Stringchinaz="";

StringBuilderinputLine=newStringBuilder();

Stringread="";

URLurl=null;

HttpURLConnectionurlConnection=null;

BufferedReaderin=null;

try{

url=newURL(chinaz);

urlConnection=(HttpURLConnection)nnection();

in=newBufferedReader(newInputStreamReader(utStream(),"UTF-8"));

while((read=ne())!=null){

(read+"rn");

}

//n(ng());

}catch(MalformedURLExceptione){

tackTrace();

}catch(IOExceptione){

tackTrace();

}finally{

if(in!=null){

try{

();

}catch(IOExceptione){

tackTrace();

}

}

}

Patternp=e("(.*?)

");

Matcherm=r(ng());

if(()){

Stringipstr=(1);

ip=ipstr;

//n(ipstr);

}

returnip;

}

/**

*解析ip地址

*

*设置访问地址为/rvice/

*设置请求参数为ip=[已经获得的ip地址]

*设置解码⽅式为UTF-8

*

*@paramcontent请求的参数格式为:ip=192.168.1.101

*@paramencoding服务器端请求编码。如GBK,UTF-8等

*@return

*@throwsUnsupportedEncodingException

*/

publicStringgetAddress(Stringcontent,Stringencoding)throwsUnsupportedEncodingException{

//设置访问地址

//⽹址⼀:

//⽹址⼆:/Data/IP/

StringurlStr="/rvice/";

//从取得IP所在的省市区信息

StringreturnStr=ult(urlStr,content,encoding);

if(returnStr!=null){

//处理返回的省市区信息

//n(returnStr);

String[]temp=(",");

if(<3){

return"0";//⽆效IP,局域⽹测试

}

Stringcountry="";//国家

Stringarea="";//地区

Stringregion="";//省份

Stringcity="";//市区

Stringcounty="";//地区

Stringisp="";//ISP公司

for(inti=0;i<;i++){

switch(i){

ca2:

country=(temp[i].split(":"))[1].replaceAll(""","");

country=(country,encoding);//国家

break;

ca3:

area=(temp[i].split(":"))[1].replaceAll(""","");

area=(area,encoding);//地区

break;

ca4:

region=(temp[i].split(":"))[1].replaceAll(""","");

region=(region,encoding);//省份

break;

ca5:

city=(temp[i].split(":"))[1].replaceAll(""","");

city=(city,encoding);//市区

if("内⽹IP".equals(city)){

return"地址为:内⽹IP";

}

break;

ca6:

county=(temp[i].split(":"))[1].replaceAll(""","");

county=(county,encoding);//地区

break;

ca7:

isp=(temp[i].split(":"))[1].replaceAll(""","");

isp=(isp,encoding);//ISP公司

break;

}

}

returnnewStringBuffer("地址为:"+country+",").append(region+"省,").append(city+"市,").append(county+",").append("ISP公司:"+isp)

.toString();

.toString();

}

returnnull;

}

/**

*访问⽬标地址并获取返回值

*

*@paramurlStr请求的地址

*@paramcontent请求的参数格式为:ip=192.168.1.101

*@paramencoding服务器端请求编码。如GBK,UTF-8等

*@return

*/

privateStringgetResult(StringurlStr,Stringcontent,Stringencoding){

URLurl=null;

HttpURLConnectionconnection=null;

try{

url=newURL(urlStr);

connection=(HttpURLConnection)nnection();//新建连接实例

nectTimeout(2000);//设置连接超时时间,单位毫秒

dTimeout(33000);//设置读取数据超时时间,单位毫秒

utput(true);//是否打开输出流true|fal

nput(true);//是否打开输⼊流true|fal

uestMethod("POST");//提交⽅法POST|GET

Caches(fal);//是否缓存true|fal

t();//打开连接端⼝

DataOutputStreamout=newDataOutputStream(putStream());//打开输出流往对端服务器写数据

ytes(content);//写数据,也就是提交你的表单name=xxx&pwd=xxx

();//刷新

();//关闭输出流

BufferedReaderreader=newBufferedReader(newInputStreamReader(utStream(),encoding));

//往对端写完数据对端服务器返回数据

//,以BufferedReader流来读取

StringBufferbuffer=newStringBuffer();

Stringline="";

while((line=ne())!=null){

(line);

}

();

ng();

}catch(IOExceptione){

tackTrace();

}finally{

if(connection!=null){

nect();//关闭连接

}

}

returnnull;

}

/**

*测试⽅法

*获取本机的内⽹ip,外⽹ip和指定ip的地址

*

*@paramargs

*/

publicstaticvoidmain(String[]args){

AddressUtilsaddressUtils=newAddressUtils();

//step1.获得内⽹ip和外⽹ip,并输出到控制台

Stringip1="";

try{

ip1=etIp();//局域⽹的ip地址,⽐如:192.168.1.101

}catch(SocketExceptione1){

tackTrace();

}

n("内⽹ip:"+ip1);

Stringip2=4IP();//⽤于实际判断地址的ip

n("外⽹ip:"+ip2);

//step2.根据外⽹ip地址,得到市级地理位置

Stringaddress="";

try{

address=ress("ip="+ip2,"utf-8");

}catch(UnsupportedEncodingExceptione){

tackTrace();

tackTrace();

}

//输出地址,⽐如:中国,⼭东省,济南市,联通

n("您的"+address);

n("******************************");

n("请输⼊想要查询的ip地址(输⼊exit退出):");

Scannerscan=newScanner();

Stringip="";

while(!"exit".equals(ip=())){

try{

address=ress("ip="+ip,"utf-8");

}catch(UnsupportedEncodingExceptione){

tackTrace();

}

//输出地址,⽐如:中国,⼭东省,济南市,联通

n(ip+"的"+address);

n("******************************");

n("请输⼊想要查询的ip地址(输⼊exit退出):");

}

();

n("再见");

}

}

参考⽂档:

java如何获得内⽹ip、外⽹ip、以及如何根据ip查询地址

本文发布于:2023-03-15 00:35:14,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/1678811715255102.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:外网ip地址查询.doc

本文 PDF 下载地址:外网ip地址查询.pdf

相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图