1.通过主机名称获取MAC地址
/**
* 获取操作系统名称
*/
public static String getOsName() {
String os = "";
os = System.getProperty("os.name");
return os;
}
/**
* 获取MAC地址
*/
public static String getMACAddress() {
String address = "";
String os = getOsName();
//根据操作系统类型获取MAC地址
if (os.startsWith("Windows")) {
try {
String command = "cmd.exe /c ipconfig /all";
Process p = Runtime.getRuntime().exec(command);
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = br.readLine()) != null) {
if (line.indexOf("Physical Address") > 0) {
int index = line.indexOf(":");
index += 2;
address = line.substring(index);
break;
}
}
br.close();
return address.trim();
} catch (IOException e) {
}
} else if (os.startsWith("Linux")) {
String command = "/bin/sh -c ifconfig -a";
Process p;
try {
p = Runtime.getRuntime().exec(command);
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = br.readLine()) != null) {
if (line.indexOf("HWaddr") > 0) {
int index = line.indexOf("HWaddr") + "HWaddr".length();
address = line.substring(index);
break;
}
}
br.close();
} catch (IOException e) {
}
}
address = address.trim();
return address;
}
2.通过远程主机IP地址获取MAC地址
/**
* 获取远程MAC地址
* @return
*/
public static String getRemoteMac(){
HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
return getRemoteMac(request);
}
/**
* 获取远程MAC地址
* @param request
* @return
*/
public static String getRemoteMac(HttpServletRequest request){
String ip = request.getRemoteAddr();
return getMACAddress(ip);
}
/**
* 通过远程IP获取MAC地址
* @param ip 远程IP地址
* @return
*/
public static String getMACAddress(String ip) {
String str = "";
String macAddress = "";
try {
Process p = Runtime.getRuntime().exec("nbtstat -a " + ip);
InputStreamReader ir = new InputStreamReader(p.getInputStream(),"GBK");
LineNumberReader input = new LineNumberReader(ir);
for (int i = 1; i < 100; i++) {
str = input.readLine();
logger.info("nbtstat -a " + ip +"\n mac info:"+str);
if (str != null) {
if (str.indexOf("MAC 地址",1) > -1) {
// 客户端使用的是中文版操作系统
macAddress = str.substring(str.indexOf("MAC 地址") + 9,
str.length());
break;
} else if (str.indexOf("MAC Address",1) > -1) {
// 客户端使用的是英文版操作系统
macAddress = str.substring(
str.indexOf("MAC Address") + 14, str.length());
break;
}
}else{
logger.error("执行 nbtstat -a " + ip + "指令执行失败");
}
}
} catch (IOException e) {
logger.error("=========获取远程mac地址异常=======IOException:", e);
}
return macAddress;
}
相关推荐
### 跨网段获取远程主机MAC地址:方法与Java实现 #### 引言与背景 在计算机网络领域,MAC地址(Media Access Control Address)作为网卡的唯一标识,扮演着关键角色,尤其是在网络通信和安全监控中。然而,传统的...
本文探讨了跨网段获取远程主机MAC地址的问题,指出SendARP方法的局限性,并提出使用SNMP协议作为替代方案。通过SNMP协议,可以克服跨网段的限制,有效获取任何网段的主机MAC地址。在Java环境中,利用SNMP4J等库可以...
在Java编程中,获取MAC(Media Access Control)地址是一项常见的任务,特别是在网络编程或者设备识别时。MAC地址是一个硬件地址,标识了网络设备在物理层的身份。本文将介绍两种在Java中获取MAC地址的方法。 首先...
Java网络唤醒工具是一种基于Java编程语言开发的软件,它允许用户通过输入目标计算机的MAC地址和网络广播地址来远程启动该计算机。这个工具利用了"网络唤醒"(Wake-on-LAN,简称WOL)技术,这项技术使得在电源关闭或...
在现代网络应用中,查询系统所在主机的网卡硬件(MAC)地址对于实现诸如远程唤醒或版权保护等功能至关重要。传统的C++或VB程序通常依赖于特定操作系统的API来实现这一功能,这虽然简单但缺乏跨平台能力。Java作为一...
用户应能轻松配置远程主机信息,启动或断开会话。 5. **文件传输**: 支持文件传输是远程控制软件的重要组成部分。JPCanyWhere可能提供拖放、剪贴板共享或专用的文件传输工具,使用户能在本地和远程计算机之间方便...
本文将深入探讨如何在操作系统中获取主机本地IP地址以及宽带拨号时的IP地址,主要针对的是动态分配的IP地址,因为这通常是家庭或小型办公室网络中常见的设置。 首先,我们需要了解IP地址的基本概念。IP地址...
- 获取主机名时,应使用`java.net.InetAddress.getHostName()`,而获取IP地址则使用`getAddress()`方法。这样可以确保在不同平台上都能获得正确的结果。 - 例如,对于域名`www.263.net`,应先解析为IP地址再进行后续...
总的来说,SAP GUI 750 for Java Rev1为Linux用户提供了一个强大且灵活的SAP访问工具,它通过Java技术确保了跨平台的兼容性,并且在功能和用户体验方面进行了持续优化。对于那些在Linux环境下工作的SAP用户来说,这...
1. **设备发现**:利用Java的网络API,程序可以扫描并发现局域网内的设备,收集IP地址、MAC地址、主机名等信息。 2. **流量监控**:通过监听网络接口,程序可以统计每台设备的上传和下载流量,这有助于识别带宽消耗...
`SocketAddress`接口提供了统一的方式来表示网络地址,无论是TCP还是UDP,都可以使用它来表示远程主机的地址和端口号。 #### 十六、客户端套接字(Socket)的超时 `Socket`类提供了设置超时时间的方法,用于控制...
常见的Valve类型包括访问日志、远程地址过滤、远程主机过滤和客户请求记录器。 12. **Servlet生命周期** - Tomcat接收请求并映射到相应的Servlet。 - 如果Servlet尚未加载,Tomcat会加载并实例化Servlet。 - ...
综上所述,"利用魔法封包技术写的远程开机程序"是一个利用WOL技术的实用工具,它通过输入远程主机的MAC地址实现远程启动计算机的功能。了解和掌握这一技术,不仅可以提高工作效率,还能增强对网络管理的理解和实践...
这款GUI版本是为那些在Java环境下工作的用户提供了一个访问SAP应用的平台,它提供了丰富的功能,使得用户可以高效、直观地操作SAP系统。 在Java平台上运行SAP GUI770,意味着它利用了Java的跨平台性,可以在不同的...
B、可以根据规则对通过的数据包进行检测、过滤 C、识别的是MAC地址,并根据MAC地址寻找路径,转发分组 D、选择最佳路径 、检查网络层地址,转发网络层数据分组 答案:C 【12】 多个终端共用一条通信线路的传输方式...
Guacamole是一款开源的远程桌面网关,它允许用户通过Web浏览器访问远程桌面,如Windows、Linux或Mac OS。在“Guacamole简单案例”中,我们将探讨如何配置和使用Guacamole,以便无需登录就能实现远程桌面的便捷访问。...
4. **编写Java代码**:使用SAP提供的API创建SAP连接,执行RFC调用(远程功能调用)或BAPI(业务对象的编程接口)。 在Linux和Mac操作系统中,配置过程基本相似,但可能需要处理权限问题和路径问题。而在Windows环境...
2. VNC(Virtual Network Computing):这是一种基于Java的跨平台远程控制工具,通过图形界面远程控制另一台计算机。VNC依赖于TCP/IP协议,适用于Windows、Linux和Mac OS等操作系统。 3. TeamViewer:这是一款流行...
2. 添加允许的IP地址列表,仅允许特定网络的设备连接ESXi主机。 3. 设置服务或客户端启动选项,优化性能并提高安全性。 总结,vSphere ESXi 5.5的单主机管理涉及安装和使用vSphere Client,配置ESXi主机的各项参数...
Apache Tomcat 7.0.47 是一个广泛使用的开源软件,它是一个实现了Java Servlet、JavaServer Pages(JSP)和Java EE的Web应用程序容器。这个版本是Tomcat 7系列的一个具体发行版,提供了对Java标准版7(Java SE 7)的...