public static String callCmd(String[] cmd) {
String result = "";
String line = "";
Process proc;
try {
proc = Runtime.getRuntime().exec(cmd);
InputStreamReader is = new InputStreamReader(proc.getInputStream());
BufferedReader br = new BufferedReader(is);
while ((line = br.readLine()) != null) {
result += line;
}
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
/**
*
*
*
* @param cmd
* 第一个命令
*
* @param another
* 第二个命令
*
* @return 第二个命令的执行结果
*
*/
public static String callCmd(String[] cmd, String[] another) {
String result = "";
String line = "";
try {
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(cmd);
proc.waitFor(); // 已经执行完第一个命令,准备执行第二个命令
proc = rt.exec(another);
InputStreamReader is = new InputStreamReader(proc.getInputStream());
BufferedReader br = new BufferedReader(is);
while ((line = br.readLine()) != null) {
result += line;
}
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
/**
*
*
*
* @param ip
* 目标ip,一般在局域网内
*
* @param sourceString
* 命令处理的结果字符串
*
* @param macSeparator
* mac分隔符号
*
* @return mac地址,用上面的分隔符号表示
*
*/
public static String filterMacAddress(final String ip,
final String sourceString, final String macSeparator) {
String result = "";
String regExp = "((([0-9,A-F,a-f]{1,2}" + macSeparator
+ "){1,5})[0-9,A-F,a-f]{1,2})";
Pattern pattern = Pattern.compile(regExp);
Matcher matcher = pattern.matcher(sourceString);
while (matcher.find()) {
result = matcher.group(1);
if (sourceString.indexOf(ip) <= sourceString.lastIndexOf(matcher
.group(1))) {
break; // 如果有多个IP,只匹配本IP对应的Mac.
}
}
return result;
}
/**
*
*
*
* @param ip
* 目标ip
*
* @return Mac Address
*
*
*
*/
public static String getMacInWindows(final String ip) {
String result = "";
String[] cmd = { "cmd", "/c", "ping " + ip };
String[] another = { "cmd", "/c", "arp -a" };
String cmdResult = callCmd(cmd, another);
result = filterMacAddress(ip, cmdResult, "-");
return result;
}
/**
*
* @param ip
* 目标ip
* @return Mac Address
*
*/
public static String getMacInLinux(final String ip) {
String result = "";
String[] cmd = { "/bin/sh", "-c", "ping " + ip + " -c 2 && arp -a" };
String cmdResult = callCmd(cmd);
result = filterMacAddress(ip, cmdResult, ":");
return result;
}
/**
* 获取MAC地址
*
* @return 返回MAC地址
*/
public static String getMacAddress(String ip) {
String macAddress = "";
macAddress = getMacInWindows(ip).trim();
if (macAddress == null || "".equals(macAddress)) {
macAddress = getMacInLinux(ip).trim();
}
return macAddress;
}
/**
* 获取客户端ip
*
* @param request
* @return
*/
public static String getIpAddr(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
if ("0:0:0:0:0:0:0:1".equals(ip)) {
return "127.0.0.1";
}
return ip;
}
/**
* 获取MAC地址(如果获取ip为127.0.0.1的话就不会得到值了。)
*
* @throws UnknownHostException
* @throws SocketException
*/
public static String getMACAddress(String ip) throws SocketException,
UnknownHostException {
if ("127.0.0.1".equals(ip)) {
return getLocalMac();
}
return getMacAddress(ip);
}
// 获取本机mac
private static String getLocalMac() throws SocketException,
UnknownHostException {
try {
InetAddress ip = InetAddress.getLocalHost();
NetworkInterface network = NetworkInterface.getByInetAddress(ip);
if (network != null) {
byte[] mac = network.getHardwareAddress();
if (mac != null) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < mac.length; i++) {
sb.append(String.format("%02X%s", mac[i],
(i < mac.length - 1) ? "-" : ""));
}
return sb.toString();
}
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (SocketException e) {
e.printStackTrace();
}
return null;
}
- 浏览: 69546 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (108)
- 数据库 (6)
- web前端 (13)
- java基础 (29)
- XML (3)
- CSS (1)
- JQuery (2)
- 杂谈 (1)
- struts2 (1)
- 配置 (2)
- 系统 (1)
- javaScript (1)
- tomcat (2)
- maven (5)
- jxl (1)
- spring (6)
- JAX-RS (2)
- servlet-api (1)
- js (1)
- itext (1)
- 面试 (4)
- java自定义注解 (1)
- jsp (3)
- linux (4)
- eclipse (1)
- ftp (1)
- 受益匪浅 (5)
- redis (5)
- java优化 (1)
- protobuf (1)
- virtualbox (1)
- 操作系统 (1)
- 异常 (1)
最新评论
发表评论
-
easyUI的iframe子页面操作父页面元素
2014-12-11 13:25 391曾经试过这样的方法 在iframe子页 ... -
javascript 将HTML转为 word,pdf 等(ie)
2014-08-18 13:39 862/** * @author wsf html转换工具 ... -
JSTL-EL表达式
2014-05-28 13:38 353JSTL-EL表达式 一个E ... -
session与cookie的异同
2014-05-22 15:57 4311.cookie 是一种发送到客户浏览器的文本串句柄,并保存 ... -
java获取客户端ip和mac
2014-05-21 14:00 330来源:http://www.cnblogs.com/hxsyl ... -
URL编码(传递特殊符号)
2014-05-20 10:04 745url编码是一种浏览器用来打包表单输入的格式,一 ... -
java实现验证码
2014-04-28 11:55 761/***************************** ... -
获取工程路径
2013-06-07 14:39 608<%String path = request.get ... -
一个不错的jquery讲解
2013-06-03 16:59 577http://www.cnblogs.com/zhangziq ... -
web程序使用时记得清理Tomcat缓存
2013-02-28 10:10 621当发布web程序时,如果在自己修改完页面或者js后启动程序没有 ... -
点击<a>标签,禁止页面自动跳到顶部的解决办法
2013-02-21 11:16 1600"平时开发的HTML表单,链接通常会使用 ... -
File Uploader:支持进度显示与文件拖拽的多文件上传前端JS脚本 .
2013-01-31 10:13 905File Uploader的前身是Ajax Upload。 ...
相关推荐
获取客户端ip地址( 这个必须从客户端传到后台): jsp页面下,很简单,request....因为系统的VIew层是用JSF来实现的,因此页面上没法直接获得类似request,在bean里做了个强制转换java 获取客户端ip mac地址
可以通过java获取客户端IPMAC主机名等信息。下载就能用,欢迎下载!
java获取客户端ip及mac地址方法,适合web开发者
在Controller类获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。如果使用了反向代理软件,用...
Java获取客户端真实IP地址
JAVA获取客户端MAC,web获取客户端MAC,Applet获取客户端MAC;JAVAweb开发;服务器端很难获取到客户端的MAC受路由器等....获取的到不正确或者被过滤掉;小弟,无奈写了一个客户端的Applet来获取客户端MAC然后再在传...
Java获取客户端真实的IP的两种实现方法,即使通过多级代理也能获取到,很有用
主要介绍了java编程实现获取机器IP地址及MAC地址的方法,实例分析了Java分别针对单网卡及多网卡的情况下获取服务器IP地址与MAC地址的相关技巧,需要的朋友可以参考下
获取客户端提交申请时的ip地址,例如用于微信支付的获取客户端ip,根据配置不不同,有可能ipv4或ipv6,当服务器在自己电脑上,做测试是,可以使用127.0.0.1替代localhost
NULL 博文链接:https://fanshuyao.iteye.com/blog/2436489
Java中获取客户端的真实IP
执行main方法获取mac地址,最权威的demo自己测试已经正常使用。网上基本都是假的获取不到,只有我这个才是最方便的
java代码实现 服务器端获取客户端的真实IP(亲测可用)
网上搜集了获取IP、MAC方法做了总结,提供多种获取IP、mac方式。支持获取多网卡IP、MAc获取
主要介绍了java获取linux服务器上的IP操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
在很多应用下都可能有需要将用户的真实IP记录下来,这时就要获得用户的真实IP地址,在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等...
java获取客户端IP及IP归属地
通过客户端的ip地址获取mac地址,本文文件本人测过,可用,请大家放心下载,绝不骗积分
使用Axis发布的webservice,用户服务器端获取客户端的IP地址
获取用户请求IP地址 根据IP地址获取mac地址