1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Android 获取本地外网IP 内网IP 计算机名等信息

Android 获取本地外网IP 内网IP 计算机名等信息

时间:2020-10-08 04:22:55

相关推荐

Android 获取本地外网IP 内网IP 计算机名等信息

一、获取本地外网IP

public static String GetNetIp()

{

URL infoUrl = null;

InputStream inStream = null;

try

{

///ic.asp

//infoUrl = new URL("/city0.asp");

infoUrl = new URL("/ic.asp");

URLConnection connection = infoUrl.openConnection();

HttpURLConnection httpConnection = (HttpURLConnection)connection;

int responseCode = httpConnection.getResponseCode();

if(responseCode == HttpURLConnection.HTTP_OK)

{

inStream = httpConnection.getInputStream();

BufferedReader reader = new BufferedReader(new InputStreamReader(inStream,"utf-8"));

StringBuilder strber = new StringBuilder();

String line = null;

while ((line = reader.readLine()) != null)

strber.append(line + "\n");

inStream.close();

//从反馈的结果中提取出IP地址

int start = strber.indexOf("[");

int end = strber.indexOf("]", start + 1);

line = strber.substring(start + 1, end);

return line;

}

}

catch(MalformedURLException e) {

e.printStackTrace();

}

catch (IOException e) {

e.printStackTrace();

}

return null;

}

二、 获取本地内网IP

// 获取本地IP函数

public static String getLocalIPAddress() {

try {

for (Enumeration<NetworkInterface> mEnumeration = NetworkInterface

.getNetworkInterfaces(); mEnumeration.hasMoreElements();) {

NetworkInterface intf = mEnumeration.nextElement();

for (Enumeration<InetAddress> enumIPAddr = intf

.getInetAddresses(); enumIPAddr.hasMoreElements();) {

InetAddress inetAddress = enumIPAddr.nextElement();

// 如果不是回环地址

if (!inetAddress.isLoopbackAddress()) {

// 直接返回本地IP地址

return inetAddress.getHostAddress().toString();

}

}

}

} catch (SocketException ex) {

System.err.print("error");

}

return null;

}

三、 获取本地外网IP、内网IP、计算机名等信息

/**

*功能: 获取外网IP,内网IP,计算机名等信息;

*

*作者: jef

*

*时间: 0714

*

*版本: v1.0.0

*

*

*程序说明:

* 通过纯真网络来获取IP,因为ip138网站有时不准。

*

* 运行程序时命令行参数请输入/ip/viewip778.aspx

* 等待程序运行完毕(执行时间视网络情况而定),会在程序目录下生成一个GETIP.sys文件来输出各参数。

*

* 运行时如果不输入命令行参数,则默认使用/ip/viewip778.aspx来获取IP。

*

* 注意,

* 不输入命令行参数时获取的信息会输出到命令行,不会输出到文件。

* 输入命令行参数时获取的信息则会输出到文件,不管获取IP成功与否。

*

* 输出信息部分内容的含义如下,

* sucess

* hostName is:MyPC

* hostAddr is:192.168.1.114

* Foreign IP is:210.72.100.9

* Location is:江苏省苏州 长城宽带

* ......

*

* 第一行表示全部过程成功与否。成功输出"sucess",否则"fail",

* 第二行表示计算机名,

* 第三行表示内网IP,

* 第四行表示外网IP,

* 第五行表示外网IP所有的可能地理位置(可信度依赖于查询的网站)。

* ......

*

*

*使用举例:

*拷贝 \cn\mail\sendback\GetIP.class 文件到C:\Documents and Settings下。注意要保留包名的目录。

*打开命令提示行窗口,输入:

*

*c:

*cd C:\Documents and Settings

*java cn.mail.sendback.GetIP /ip/viewip778.aspx

*

*等待C:\Documents and Settings目录下出现GETIP.sys文件则表示执行完毕,

*用记事本打开该文件。含义见说明部分。

*

*/

package com.soai.test;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.OutputStreamWriter;

import .InetAddress;

import .URL;

import .UnknownHostException;

import java.util.Date;

public class GetIP {

/**

* @param args

*/

public static void main(String[] args){

// 通过纯真网络来获取IP,因为ip138网站有时不准。

// 运行程序时命令行输入:/ip/viewip778.aspx

boolean bHasNoArgs =false;

if(args.length<=0) bHasNoArgs =true;

StringBuffer sbFileContent =new StringBuffer();

boolean bGetSuccess =true;

try {

InetAddress host =InetAddress.getLocalHost();

String hostName =host.getHostName();

String hostAddr=host.getHostAddress();

String tCanonicalHostName =host.getCanonicalHostName();

Date da =new Date();

String osname =System.getProperty("os.name");

String osversion =System.getProperty("os.version");

String username =System.getProperty("user.name");

String userhome =System.getProperty("user.home");

String userdir =System.getProperty("user.dir");

if(bHasNoArgs){

System.out.println("hostName is:"+hostName);

System.out.println("hostAddr is:"+hostAddr);

System.out.println("Current Date is:"+da.toString());

System.out.println("osname is:"+osname);

System.out.println("osversion is:"+osversion);

System.out.println("username is:"+username);

System.out.println("userhome is:"+userhome);

System.out.println("userdir is:"+userdir);

}

else{

sbFileContent.append("hostName is:"+hostName+"\n");

sbFileContent.append("hostAddr is:"+hostAddr+"\n");

sbFileContent.append("Current Date is:"+da.toString()+"\n");

sbFileContent.append("osname is:"+osname+"\n");

sbFileContent.append("osversion is:"+osversion+"\n");

sbFileContent.append("username is:"+username+"\n");

sbFileContent.append("userhome is:"+userhome+"\n");

sbFileContent.append("userdir is:"+userdir+"\n");

}

StringBuffer url =new StringBuffer();

if(bHasNoArgs||args[0].equals(null)||args[0].equals("")){

url.append("/ip/viewip778.aspx");

}

else

url.append(args[0]);

StringBuffer strForeignIP =new StringBuffer("strForeignIPUnkown");

StringBuffer strLocation =new StringBuffer("strLocationUnkown");

if(GetIP.getWebIp(url.toString(),strForeignIP,strLocation)){

if(bHasNoArgs){

System.out.println("Foreign IP is:"+strForeignIP);

System.out.println("Location is:"+strLocation);

}

else{

sbFileContent.append("Foreign IP is:"+strForeignIP+"\n");

sbFileContent.append("Location is:"+strLocation+"\n");

}

}

else{

if(bHasNoArgs){

System.out.println("Failed to connect:"+url);

}

else{

bGetSuccess =false;

sbFileContent.append("Failed to connect:"+url+"\n");

}

}

} catch (UnknownHostException e) {

if(bHasNoArgs){

e.printStackTrace();

}

else{

bGetSuccess =false;

sbFileContent.append(e.getStackTrace()+"\n");

}

}

if(bGetSuccess)

sbFileContent.insert(0,"sucess"+"\n");

else

sbFileContent.insert(0,"fail"+"\n");

if(!bHasNoArgs) write2file(sbFileContent);

}

public static boolean getWebIp(String strUrl,

StringBuffer strForeignIP,StringBuffer strLocation) {

try {

URL url = new URL(strUrl);

BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));

String s = "";

StringBuffer sb = new StringBuffer("");

while ((s = br.readLine()) != null) {

sb.append(s + "\r\n");

}

br.close();

String webContent = "";

webContent = sb.toString();

if( webContent.equals(null)|| webContent.equals("") ) return false;

String flagofForeignIPString ="IPMessage";

int startIP = webContent.indexOf(flagofForeignIPString)+flagofForeignIPString.length()+2;

int endIP = webContent.indexOf("</span>",startIP);

strForeignIP.delete(0, webContent.length());

strForeignIP.append(webContent.substring(startIP,endIP));

String flagofLocationString ="AddrMessage";

int startLoc = webContent.indexOf(flagofLocationString)+flagofLocationString.length()+2;

int endLoc = webContent.indexOf("</span>",startLoc);

strLocation.delete(0, webContent.length());

strLocation.append(webContent.substring(startLoc,endLoc));

return true;

} catch (Exception e) {

//e.printStackTrace();

return false;

}

}

public static voidwrite2file(StringBuffer content){

if(content.length()<=0) return;

try {

FileOutputStream fos = new FileOutputStream("GETIP.sys");

OutputStreamWriter osr =new OutputStreamWriter(fos);

BufferedWriter bw =new BufferedWriter(osr);

try {

int index =0;

while(index>=0){

int preIndex =index;

index =content.indexOf("\n", preIndex+2);

if(index>0){

String str =new String(content.substring(preIndex, index));

bw.write(str);

bw.newLine();

}

else{

String str =new String(content.substring(preIndex, content.length()-1));

bw.write(str);

break;

}

}

} catch (IOException e1) {

// TODO Auto-generated catch block

//e1.printStackTrace();

}

try {

bw.close();

} catch (IOException e) {

// TODO Auto-generated catch block

//e.printStackTrace();

}

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

//e.printStackTrace();

}

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。