Mac Address(Physical Address), 作为计算机的一个重要的标识,已经赢得很多的注册软件作为标识符号的青睐(尽管高级用户可以随意修改这个地址)。 下面是Java代码程序,没有经过更多平台的测试。使用时,请对平台进行更多测试.
如果你测试通过了X平台,或经过修改后成功取得了数据。请奉献出来或给予评论.
/**
*
* @author ihavegotyou
* Created on 2010-01-23
* Email ihavegotyou520 AT hotmail DOT com
*/
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 根据ip获取MAC地址.
*
* @author ihavegotyou
* @version 10.1.23
*/
public class GetMacFromIp {
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;
}
/**
*
* @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);
int exitVal = 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;
}
/**
*
* @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;
}
/**
* 测试
*/
public static void main(String[] args) {
String fileSeparator = System.getProperty("file.separator"); //根据文件分隔符号区分平台
if (fileSeparator.equals("/")){
System.out.println(getMacInLinux("192.168.199.42"));
}
else if(fileSeparator.equals("\\")){
System.out.println(getMacInWindows("192.168.1.175")); //nicrosoft喜欢对着干
//System.out.println(getMacInWindows("127.0.0.1"));
}
}
}
分享到:
相关推荐
这段代码通过NetworkInterface.GetAllNetworkInterfaces获取所有网络接口,然后筛选出状态为Up且非回环接口的网络接口,最后通过GetPhysicalAddress方法获取MAC地址。 结合这两个函数,我们可以编写一个小程序来...
要从IP地址获取MAC地址,我们需要使用ARP(Address Resolution Protocol)协议。ARP是用于将IP地址解析为MAC地址的协议,它存在于TCP/IP协议栈的数据链路层。在Windows系统中,我们可以直接调用Iphlpapi.dll库中的...
获取MAC地址相对复杂一些,因为.NET Framework不直接提供API来获取远程客户端的MAC地址。通常情况下,服务器无法直接获取到客户端的MAC地址,除非它们位于同一网络段并且通过ARP(Address Resolution Protocol)协议...
在实际开发中,获取客户端的IP地址是常见的需求,而获取MAC地址则较为罕见且可能存在一定的法律风险和技术难题。开发者应当根据具体的应用场景和需求来选择合适的方法。此外,在处理敏感信息时,还应遵循相关的法律...
本文实例讲述了Python3获取电脑IP、主机名、Mac地址的方法。分享给大家供大家参考,具体如下: # -*- coding:utf-8 -*- #! python3 ''' ...# 获取Mac地址 def get_mac_address(): mac=uuid.UUID(int
当你需要在本地网络中与特定设备通信时,知道其IP地址是不够的,还需要获取对应的MAC地址。在C语言中,可以通过ARP(Address Resolution Protocol)协议来实现这一功能。下面我们将详细介绍如何在C语言中使用ARP协议...
如果你想要获取指定IP的MAC地址,你需要使用 ARP(Address Resolution Protocol)协议。ARP 是一种用于将IP地址映射到MAC地址的协议。在C#中,可以借助P/Invoke调用Windows API来实现这个功能。以下是一个简单的示例...
至于获取MAC地址,这需要用到`NetworkInterface`类的`getHardwareAddress()`方法。以下是一个获取MAC地址的示例: ```java public static String getLocalMACAddress() { String macAddress = ""; try { ...
这里提供了一个简单的示例,用于在 Windows 系统中通过 IP 地址获取 MAC 地址: ```java public String getMACAddress(String ip) { String str = ""; String macAddress = ""; try { Process p = Runtime....
例如,在Python中,可以使用`ipaddress`库,将IP地址转换为IPv4Network对象,然后检查其是否为私有网络。 4. **字符串IP转Number地址**: 字符串形式的IP地址(如“192.168.1.1”)可以转换为整数形式,便于计算和...
4. **获取MAC地址**:同样在`NetworkInterface`类中,可以找到`GetPhysicalAddress()`方法来获取MAC地址: ```csharp byte[] macBytes = ni.GetPhysicalAddress().GetAddressBytes(); string macAddress = string....
`ReadMe`文件通常包含关于软件或程序的说明和指导,而`MacAddress`可能是用来演示如何获取MAC地址的代码或数据。为了获取具体信息,你需要打开这些文件进行查看。如果`MacAddress`是Python脚本,运行它可能会直接...
请注意,这里只是一个基础示例,实际的`GetMACAddress`函数需要正确处理错误,并解析`Buffer`来获取MAC地址。 在压缩包中的`Unit1.pas`和`Unit1.dfm`文件很可能是实现这些功能的源代码和界面设计文件。`Project1....
本主题聚焦于如何利用C#通过IP地址或计算机名获取相关网络信息,包括IP地址、MAC地址以及进行DNS查询。以下是关于这些知识点的详细说明: 1. **IP地址**: - IP(Internet Protocol)地址是网络上设备的唯一标识,...
因此,`getIpAndMac.js` 文件可能只实现了获取IP地址的部分,而没有获取MAC地址的功能。 在实际开发中,如果需要获取MAC地址,通常会依赖于客户端应用程序或者用户手动输入。在服务器端,通过特定的网络库或API,如...
以下是如何在上面的代码基础上添加获取MAC地址的逻辑: ```csharp foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces()) { if (ni.OperationalStatus == OperationalStatus.Up) { ...
2. 获取MAC地址: 对于MAC地址,我们可以用`wmic`(Windows Management Instrumentation Command-line)工具: ``` for /f "skip=7 tokens=2 delims=:" %i in ('wmic nic get MACAddress ^| findstr /v "MAC...
C#中的`NetworkInterface`类提供了获取MAC地址的方法。以下代码展示了如何获取本地计算机的MAC地址: ```csharp using System.Net.NetworkInformation; PhysicalAddress macAddress = NetworkInterface....
获取MAC地址则相对复杂一些,因为Java标准库并不直接提供获取MAC地址的方法。通常需要通过JNI(Java Native Interface)调用操作系统底层API,或者使用第三方库如JNA(Java Native Access)。以下是一个简单的示例,...
C# 获取本地IP地址以及MAC...C#获取本地IP地址和MAC地址可以通过多种方式实现,包括通过主机名获取局域网IP地址、通过局域网IP地址获取主机名和使用nbtstat命令获取MAC地址等方式。这些方法可以满足不同的需求和场景。