javaWeb快速获取服务器的IP和对应的Mac地址
来源:互联网 发布:淘宝上传凭证是什么 编辑:程序博客网 时间:2024/06/05 16:39
* 是,如果通过了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP值,究竟哪个才是真正的用户端的真实IP呢? 答案是取X-Forwarded-For中第一个非unknown的有效IP字符串。 如:X-Forwarded-For:192.168.1.110, 192.168.1.120, 192.168.1.130, 192.168.1.100用户真实IP为:
* 192.168.1.110
*
* @参照 http://suoyihen.iteye.com/blog/1355934
*
* @return 获得客户端的真实IP地址
* @throws SocketException
* @throws UnknownHostException
*/
public static String getIPAddress() {
if (ServletActionContext.getRequest() == null)
return "";
String ip = ServletActionContext.getRequest().getHeader("X-Requested-For");
if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
ip = ServletActionContext.getRequest().getHeader("X-Forwarded-For");
}
if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
ip = ServletActionContext.getRequest().getHeader("Proxy-Client-IP");
}
if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
ip = ServletActionContext.getRequest().getHeader("WL-Proxy-Client-IP");
}
if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
ip = ServletActionContext.getRequest().getHeader("HTTP_CLIENT_IP");
}
if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
ip = ServletActionContext.getRequest().getHeader("HTTP_X_FORWARDED_FOR");
}
if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
ip = ServletActionContext.getRequest().getRemoteAddr();
}
if ("127.0.0.1".equals(ip) || "0:0:0:0:0:0:0:1".equals(ip))
try {
//根据网卡取本机配置的IP
ip = InetAddress.getLocalHost().getHostAddress();
}
catch (UnknownHostException unknownhostexception) {
}
//对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
if(ip!=null && ip.length()>15){ //"***.***.***.***".length() = 15
if(ip.indexOf(",")>0){
ip = ip.substring(0,ip.indexOf(","));
}
}
return ip;
}
//获取对应的mac地址
public static String getMACAddress2(String ip) {
String str = "";
String macAddress = "";
try {
Process p = Runtime.getRuntime().exec("nbtstat -a " + ip);
InputStreamReader ir = new InputStreamReader(p.getInputStream());
LineNumberReader input = new LineNumberReader(ir);
for (int i = 1; i < 100; i++) {
str = input.readLine();
if (str != null) {
//if (str.indexOf("MAC Address") > 1) {
if (str.indexOf("MAC") > 1) {
macAddress = str.substring(
str.indexOf("=") + 2, str.length());
break;
}
}
}
} catch (IOException e) {
e.printStackTrace(System.out);
}
return macAddress;
}
- javaWeb快速获取服务器的IP和对应的Mac地址
- 获取服务器的IP地址和MAC地址
- 根据IP地址获取对应的MAC地址
- 获取iphone 的ip 和 mac地址
- 获取计算机的IP和MAC地址
- Linux C 网络编程 - 获取本地 ip 地址,mac,通过域名获取对应的 ip
- 获取网卡的mac和指定ip地址的mac
- 获取路由器的Mac地址和当前的iP地址
- ASP.NET获取服务器IP与MAC地址的方法
- C# 获取主机对应的IP地址和主机名
- 获取网卡的MAC地址和IP地址
- vbscript获取本机的ip地址和mac地址
- 获取客户端的IP地址和Mac地址
- android 获取ip地址和mac地址的多种方式
- 获取客户端网卡MAC地址和IP地址的方法
- android获取IP地址和MAC地址的方法
- java获取本机的IP地址和mac地址
- 获取andorid设备的IP地址和MAC地址
- Android网络通信之Socket
- 考过一个HCIE,华为奖励12万,名额有限预考从速
- Android 中TextView部分文字颜色、点击跳转设置
- 人工智能最终将超越人类,但不是反人类
- 从友盟指数的设计思路,分析可视化领域“小鲜肉” Treemap
- javaWeb快速获取服务器的IP和对应的Mac地址
- 优化你的css
- struts中要导入的包
- 使用Flask-OAuthlib实现QQ OAuth2登录
- XML解析
- OCM考试经验--RMAN基础详解(三)--备份详解
- STL set
- Netty 4.x 用户手册
- 《Effective C++》读书摘要