前言
需要获取客户端的ip地址以及mac地址
import java.io.bufferedreader; import java.io.ioexception; import java.io.inputstreamreader; public class test { public static void main(string[] args) { try { // 执行命令 process process = runtime.getruntime().exec("ipconfig /all"); // 读取命令输出 bufferedreader reader = new bufferedreader(new inputstreamreader(process.getinputstream())); string line; while ((line = reader.readline()) != null) { // 输出命令结果 system.out.println(line); } } catch (ioexception e) { e.printstacktrace(); } } }
纯用cmd可能权限不够,可能格式可能乱码等问题
后续转为网络编程api接口
网络适配器的 ipv4 和 mac 地址,最好直接使用 java 的网络编程 api,而不是通过执行系统命令来获取,可以使用 java.net.networkinterface
类来获取网络接口的信息,然后进一步筛选出所需的适配器信息
- 在获取本地主机信息时,要考虑多网卡的情况,确保准确获取所需的网络适配器信息
- 对于操作系统信息的获取,可以考虑使用更可靠的方式,如 system.getproperty() 方法
1. ip及mac
import java.net.inetaddress; import java.net.networkinterface; import java.net.socketexception; import java.util.enumeration; public class test { public static void main(string[] args) { try { // 获取所有网络接口 enumeration<networkinterface> interfaces = networkinterface.getnetworkinterfaces(); while (interfaces.hasmoreelements()) { networkinterface networkinterface = interfaces.nextelement(); // 输出网络接口名称 system.out.println("network interface: " + networkinterface.getdisplayname()); // 获取该网络接口的所有地址 enumeration<inetaddress> addresses = networkinterface.getinetaddresses(); while (addresses.hasmoreelements()) { inetaddress address = addresses.nextelement(); // 输出地址信息 system.out.println(" address: " + address.gethostaddress()); } // 获取 mac 地址 byte[] mac = networkinterface.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) ? "-" : "")); } // 输出 mac 地址 system.out.println(" mac address: " + sb.tostring()); } } } catch (socketexception e) { e.printstacktrace(); } } }
截图如下:
2. 特定适配器
不同电脑可能特定的适配器不大一样,具体demo看自身
package com.example.test; import java.net.inetaddress; import java.net.networkinterface; import java.net.socketexception; import java.util.enumeration; public class test { public static void main(string[] args) { try { // 获取所有网络接口 enumeration<networkinterface> interfaces = networkinterface.getnetworkinterfaces(); while (interfaces.hasmoreelements()) { networkinterface networkinterface = interfaces.nextelement(); // 检查是否是你想要的网络适配器,这里假设名字为 "vmware network adapter vmnet8" if (networkinterface.getdisplayname().equals("vmware virtual ethernet adapter for vmnet8")) { // 获取该网络接口的所有地址 enumeration<inetaddress> addresses = networkinterface.getinetaddresses(); while (addresses.hasmoreelements()) { inetaddress address = addresses.nextelement(); // 过滤 ipv4 地址 if (address instanceof java.net.inet4address) { // 输出 ipv4 地址 system.out.println("ipv4 address: " + address.gethostaddress()); } } // 获取 mac 地址 byte[] mac = networkinterface.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) ? "-" : "")); } // 输出 mac 地址 system.out.println("mac address: " + sb.tostring()); } } } } catch (socketexception e) { e.printstacktrace(); } } }
截图如下:
到此这篇关于java获取ip地址以及mac地址的示例代码的文章就介绍到这了,更多相关java获取ip地址以及mac地址内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论