api上面我翻了下似乎没有,但是你可以使用java调用本地的shell进行查看(windows和linux的命令不太一样,但方法一样)。
代码:
Process process= RuntimegetRuntime()exec("你本地的shell或者cmd命令");
InputStream s=processgetInputStream();
//从is里面读取内容(也就是你的命令执行结果),这里代码就省略了
processwaitFor();
至于具体命令的话用下 netstat -s 看下
工具/原料
一台配置好java环境的可以上网的电脑
Java获取本地Mac地址
首先,创建工程,包,和一个类。
在此不加详述,我们直接看代码。
这里,我把这个类命名为GetMacAddr
这里,最最关键的就是这里这个方法。
我们通过NetworkInterface这个类来 *** 作。
也就是通过getLocalHost()方法先得到本机IP,
然后调用getHardwareAddress()方法得到一个byte数组的地址。
我们把六位地址传到一个byte数组里面,然后输出来就是。
不多废话,看代码:
private void getMACAddr()
throws SocketException, UnknownHostException {
// 获得IP
NetworkInterface netInterface =
NetworkInterfacegetByInetAddress(InetAddressgetLocalHost());
// 获得Mac地址的byte数组
byte[] macAddr = netInterfacegetHardwareAddress();
Systemoutprint("MAC Addr:\t");
// 循环输出
for (byte b : macAddr) {
// 这里的toHexString()是自己写的格式化输出的方法,见下步。
Systemoutprint(toHexString(b) + " ");
}
}
上一步骤中,为什么会出现一个toHexString()方法呢?
因为可能10进制转16进制时候可能会出现单字符,
所以,如果有出现单字符的情况,我们在其前面添加一个“0”做占位符。
这也是为了视觉的直观,也夹带着个人的习惯。
private static String toHexString(int integer) {
// 将得来的int类型数字转化为十六进制数
String str = IntegertoHexString((int) (integer & 0xff));
// 如果遇到单字符,前置0占位补满两格
if (strlength() == 1) {
str = "0" + str;
}
return str;
}
然后,我们写一个简单的main方法测试一下。
public static void main(String[] args)
throws SocketException, UnknownHostException {
new GetMacAddr()getMACAddr();
}
结果无误,我们得到了本地的MAC地址。
大家一起来试一试吧!
import javanetInetAddress;
import javanetUnknownHostException;
public class Test
{
public static void main(String[] args) throws UnknownHostException
{
InetAddress inet = InetAddressgetLocalHost();
Systemoutprintln("本机的ip=" + inetgetHostAddress());
}
}
这位兄台 我也允许了一遍,程序的确是没问题。。。
这是我的运行结果
本机的IP地址是:172164384
IP地址的版本是:IPv4
我知道了,你同时在使用ipv6和ipv4地址,程序获取的时候,不知道该获取ipv4还是ipv6的地址,这样运行就出错了,你禁用ipv6或者ipv4试一下,应该可以
public static String getMotherboardSN() {
String result = "";
try {
File file = FilecreateTempFile("realhowto", "vbs");
filedeleteOnExit();
FileWriter fw = new javaioFileWriter(file);
String vbs = "Set objWMIService = GetObject(\"winmgmts:\\\\\\root\\cimv2\")\n"
+ "Set colItems = objWMIServiceExecQuery _ \n"
+ " (\"Select from Win32_BaseBoard\") \n"
+ "For Each objItem in colItems \n"
+ " WscriptEcho objItemSerialNumber \n"
+ " exit for ' do the first cpu only! \n" + "Next \n";
fwwrite(vbs);
fwclose();
Process p = RuntimegetRuntime()exec(
"cscript //NoLogo " + filegetPath());
BufferedReader input = new BufferedReader(new InputStreamReader(
pgetInputStream()));
String line;
while ((line = inputreadLine()) != null) {
result += line;
}
inputclose();
} catch (Exception e) {
eprintStackTrace();
}
Systemoutprintln(result);
return resulttrim();
}
public static void main(String[] args)
{
getMotherboardSN();
}
这个是我在网上找的,但是只能在windows下获得主板序列号,在linux下就不行。我愁~在linux下如何获得主板序列号呢。
以上就是关于java如何获取本机网络协议信息全部的内容,包括:java如何获取本机网络协议信息、java socket编程中怎么获得本机mac-CSDN论坛、怎样用JAVA程序获取本机ip 等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)