首页服务器java获取服务器ip(java中如何获取到本机的外网ip地址)

java获取服务器ip(java中如何获取到本机的外网ip地址)

编程之家2023-10-1983次浏览

老铁们,大家好,相信还有很多朋友对于java获取服务器ip和java中如何获取到本机的外网ip地址的相关问题不太懂,没关系,今天就由我来为大家分享分享java获取服务器ip以及java中如何获取到本机的外网ip地址的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!

java获取服务器ip(java中如何获取到本机的外网ip地址)

Java怎样获取当前机器外网IP

java获取本机的外网ip示例:

import java.io.IOException;

import java.io.InputStream;

import java.net.HttpURLConnection;

import java.net.MalformedURLException;

import java.net.URL;

java获取服务器ip(java中如何获取到本机的外网ip地址)

import java.util.regex.Matcher;

import java.util.regex.Pattern;

/**

*获取本机外网IP地址

*思想是访问网站http://checkip.dyndns.org/,得到返回的文本后解析出本机在外网的IP地址

*@author pieryon

java获取服务器ip(java中如何获取到本机的外网ip地址)

*

*/

public class ExternalIpAddressFetcher{

//外网IP提供者的网址

private String externalIpProviderUrl;

//本机外网IP地址

private String myExternalIpAddress;

public ExternalIpAddressFetcher(String externalIpProviderUrl){

this.externalIpProviderUrl= externalIpProviderUrl;

String returnedhtml= fetchExternalIpProviderHTML(externalIpProviderUrl);

parse(returnedhtml);

}

/**

*从外网提供者处获得包含本机外网地址的字符串

*从http://checkip.dyndns.org返回的字符串如下

*<html><head><title>Current IP Check</title></head><body>Current IP Address: 123.147.226.222</body></html>

*@param externalIpProviderUrl

*@return

*/

private String fetchExternalIpProviderHTML(String externalIpProviderUrl){

//输入流

InputStream in= null;

//到外网提供者的Http连接

HttpURLConnection httpConn= null;

try{

//打开连接

URL url= new URL(externalIpProviderUrl);

httpConn=(HttpURLConnection) url.openConnection();

//连接设置

HttpURLConnection.setFollowRedirects(true);

httpConn.setRequestMethod("GET");

httpConn.setRequestProperty("User-Agent",

"Mozilla/4.0(compatible; MSIE 6.0; Windows 2000)");

//获取连接的输入流

in= httpConn.getInputStream();

byte[] bytes=new byte[1024];//此大小可根据实际情况调整

//读取到数组中

int offset= 0;

int numRead= 0;

while(offset< bytes.length

&&(numRead=in.read(bytes, offset, bytes.length-offset))>= 0){

offset+= numRead;

}

//将字节转化为为UTF-8的字符串

String receivedString=new String(bytes,"UTF-8");

//返回

return receivedString;

} catch(MalformedURLException e){

e.printStackTrace();

} catch(IOException e){

e.printStackTrace();

} finally{

try{

in.close();

httpConn.disconnect();

} catch(Exception ex){

ex.printStackTrace();

}

}

//出现异常则返回空

return null;

}

/**

*使用正则表达式解析返回的HTML文本,得到本机外网地址

*@param html

*/

private void parse(String html){

Pattern pattern=Pattern.compile("(\\d{1,3})[.](\\d{1,3})[.](\\d{1,3})[.](\\d{1,3})", Pattern.CASE_INSENSITIVE);

Matcher matcher=pattern.matcher(html);

while(matcher.find()){

myExternalIpAddress=matcher.group(0);

}

}

/**

*得到本机外网地址,得不到则为空

*@return

*/

public String getMyExternalIpAddress(){

return myExternalIpAddress;

}

public static void main(String[] args){

ExternalIpAddressFetcher fetcher=new ExternalIpAddressFetcher("http://checkip.dyndns.org/");

System.out.println(fetcher.getMyExternalIpAddress());

}

}

java中如何获取到本机的外网ip地址

java获取本机的外网ip示例:

import java.io.IOException;

import java.io.InputStream;

import java.net.HttpURLConnection;

import java.net.MalformedURLException;

import java.net.URL;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

/**

*获取本机外网IP地址

*思想是访问网站http://checkip.dyndns.org/,得到返回的文本后解析出本机在外网的IP地址

*@author pieryon

*

*/

public class ExternalIpAddressFetcher{

//外网IP提供者的网址

private String externalIpProviderUrl;

//本机外网IP地址

private String myExternalIpAddress;

public ExternalIpAddressFetcher(String externalIpProviderUrl){

this.externalIpProviderUrl= externalIpProviderUrl;

String returnedhtml= fetchExternalIpProviderHTML(externalIpProviderUrl);

parse(returnedhtml);

}

/**

*从外网提供者处获得包含本机外网地址的字符串

*从http://checkip.dyndns.org返回的字符串如下

*<html><head><title>Current IP Check</title></head><body>Current IP Address: 123.147.226.222</body></html>

*@param externalIpProviderUrl

*@return

*/

private String fetchExternalIpProviderHTML(String externalIpProviderUrl){

//输入流

InputStream in= null;

//到外网提供者的Http连接

HttpURLConnection httpConn= null;

try{

//打开连接

URL url= new URL(externalIpProviderUrl);

httpConn=(HttpURLConnection) url.openConnection();

//连接设置

HttpURLConnection.setFollowRedirects(true);

httpConn.setRequestMethod("GET");

httpConn.setRequestProperty("User-Agent",

"Mozilla/4.0(compatible; MSIE 6.0; Windows 2000)");

//获取连接的输入流

in= httpConn.getInputStream();

byte[] bytes=new byte[1024];//此大小可根据实际情况调整

//读取到数组中

int offset= 0;

int numRead= 0;

while(offset< bytes.length

&&(numRead=in.read(bytes, offset, bytes.length-offset))>= 0){

offset+= numRead;

}

//将字节转化为为UTF-8的字符串

String receivedString=new String(bytes,"UTF-8");

//返回

return receivedString;

} catch(MalformedURLException e){

e.printStackTrace();

} catch(IOException e){

e.printStackTrace();

} finally{

try{

in.close();

httpConn.disconnect();

} catch(Exception ex){

ex.printStackTrace();

}

}

//出现异常则返回空

return null;

}

/**

*使用正则表达式解析返回的HTML文本,得到本机外网地址

*@param html

*/

private void parse(String html){

Pattern pattern=Pattern.compile("(\\d{1,3})[.](\\d{1,3})[.](\\d{1,3})[.](\\d{1,3})", Pattern.CASE_INSENSITIVE);

Matcher matcher=pattern.matcher(html);

while(matcher.find()){

myExternalIpAddress=matcher.group(0);

}

}

/**

*得到本机外网地址,得不到则为空

*@return

*/

public String getMyExternalIpAddress(){

return myExternalIpAddress;

}

public static void main(String[] args){

ExternalIpAddressFetcher fetcher=new ExternalIpAddressFetcher("http://checkip.dyndns.org/");

System.out.println(fetcher.getMyExternalIpAddress());

}

}

java servlet获取客户端IP

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

request.getRemoteAddr()的方法获取的IP实际上是代理服务器的地址,并不是客户端的IP地址。

于是可得出获得客户端真实IP地址的方法一:

public String getRemortIP(HttpServletRequest request){

if(request.getHeader("x-forwarded-for")== null){

return request.getRemoteAddr();

}

return request.getHeader("x-forwarded-for");

}

你可以写一个Filter配置在web.xml中让服务器启动的时候就开始监听直到服务器停止!

OK,关于java获取服务器ip和java中如何获取到本机的外网ip地址的内容到此结束了,希望对大家有所帮助。

服务器硬盘容量 硬盘的容量分别多少G域名到期后多久可以注册?域名到期后一般多久被删除或可以重新注册