首先要说的是:可以支持外网机器的mac地址获取。 以前弄了一个只能访问局域网。 有防火墙就访问不了, 但是这个不用担心了。 测试了百度的ip,已经可以获得mac地址
测试效果图:
java通过ip获取mac地址-封ip封mac地址
package com.yjf.test;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 获取MAC地址
* @author
* 2011-12
*/
public class GetMacAddress {
public static String callCmd(String[] cmd) {
String result = "";
String line = "";
try {
Process proc = Runtime.getRuntime().exec(cmd);
InputStreamReader is = new InputStreamReader(proc.getInputStream());
BufferedReader br = new BufferedReader (is);
while ((line = br.readLine ()) != null) {
result += line;
}
}
catch(Exception e) {
e.printStackTrace();
}
return result;
}
来源地址:http://yijianfengvip.blog.163.com/blog/static/175273432201212295830661/
/**
*
* @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(Exception e) {
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;
}
来源博客:http://yijianfengvip.blog.163.com/blog/static/175273432201212295830661/
/**
*
* @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;
}
来源博客:http://yijianfengvip.blog.163.com/blog/static/175273432201212295830661/
/**
* 测试
*/
public static void main(String[] args) {
System.out.println(getMacAddress("220.181.111.148"));
}
}
java通过ip获取mac地址-封ip封mac地址
测试效果图:
分享到:
相关推荐
基于java的开发源码-Tsinghua IP 清华大学学生写的一个有关IP的程序.zip 基于java的开发源码-Tsinghua IP 清华大学学生写的一个有关IP的程序.zip 基于java的开发源码-Tsinghua IP 清华大学学生写的一个有关IP的程序....
基于java的开发源码-IP定位器.zip 基于java的开发源码-IP定位器.zip 基于java的开发源码-IP定位器.zip 基于java的开发源码-IP定位器.zip 基于java的开发源码-IP定位器.zip 基于java的开发源码-IP定位器.zip 基于java...
java中通过ip获取远程客户端的mac地址,支持跨平台
获取客户端ip地址( 这个必须从客户端传到后台): jsp页面下,很简单,request....因为系统的VIew层是用JSF来实现的,因此页面上没法直接获得类似request,在bean里做了个强制转换java 获取客户端ip mac地址
获取用户请求IP地址 根据IP地址获取mac地址
获取计算机的mac地址和ip地址,mac地址返回的是一个list,ip地址是string
主要介绍了java编程实现获取机器IP地址及MAC地址的方法,实例分析了Java分别针对单网卡及多网卡的情况下获取服务器IP地址与MAC地址的相关技巧,需要的朋友可以参考下
Java获取本机MAC地址IP地址主机名
在对网内主机进行监控时需要通过java获取远程机器的mac地址
基于java的开发源码-SIP协议包 jSIP.zip 基于java的开发源码-SIP协议包 jSIP.zip 基于java的开发源码-SIP协议包 jSIP.zip 基于java的开发源码-SIP协议包 jSIP.zip 基于java的开发源码-SIP协议包 jSIP.zip 基于java的...
LINUX编程,通过IP地址获取MAC地址代码。方
后端Java部分知识----文件地址----File类
执行main方法获取mac地址,最权威的demo自己测试已经正常使用。网上基本都是假的获取不到,只有我这个才是最方便的
java获取IP地址和MAC地址。 /** * 通过HttpServletRequest返回IP地址 * @param request HttpServletRequest * @return ip String * @throws Exception */ public String getIpAddr(HttpServletRequest ...
基于java的开发源码-邮箱地址验证 jaev.zip 基于java的开发源码-邮箱地址验证 jaev.zip 基于java的开发源码-邮箱地址验证 jaev.zip 基于java的开发源码-邮箱地址验证 jaev.zip 基于java的开发源码-邮箱地址验证 jaev...
GraalVM(graalvm-ce-java17-darwin-amd64-21.3.0.tar.gz适用于MacOS (amd64) ), GraalVM 是一个高性能 JDK 发行版,旨在加速用 Java 和其他 JVM 语言编写的应用程序的执行,并支持 JavaScript、Ruby、Python 和...
protoc-gen-grpc-java-1.40.0-osx-aarch_64 mac arm芯片平台grpc生成java的支持。官网上面没有,这是基于源码编译生成的。 pom.xml:(protoc-gen-grpc-java-1.40.0.pom) <?xml version="1.0" encoding="UTF-8"?> ...
在Controller类获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。如果使用了反向代理软件,用...
可以通过java获取客户端IPMAC主机名等信息。下载就能用,欢迎下载!
java 获取计算机名与IP地址 java 获取计算机名与IP地址 java 获取计算机名与IP地址