java 获取linux mac_java在linux获得ip地址和mac
以前在linux下获取ip和mac一般使用jni,调用linux的ioctl。当然也有使用shell获取的。
发现在jdk 6下已经实现了,java.net.NetworkInterface上面有静态方法可以获取到所有本地网卡信息。注意的是用Java的InetAddress.getLocalHost()方法在Linux下只能得到127.0.0.1,只能在Windows下获取正确的ip地址.
代码如下
package test;
import java.io.*;
import java.net.*;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static java.lang.System.out;
public class ListNIFs
{
public static void main(String args[]) throws SocketException {
Enumerationnets = NetworkInterface.getNetworkInterfaces();
for (NetworkInterface netIf : Collections.list(nets)) {
String name = netIf.getDisplayName();
if(name.equals("eth0"))
{
out.printf("Display name: %s\n", netIf.getDisplayName());
out.printf("Name: %s\n", netIf.getName());
byte [] mac = netIf.getHardwareAddress();
String macs =Hex.encodeHexStr(mac);
out.printf("Name: %s\n", macs);
//displaySubInterfaces(netIf);
out.printf("\n");
}
}
printHardwareAddresses();
}
static void printHardwareAddresses() throws SocketException {
if (System.getProperty("os.name").equals("Linux")) {
// Read all available device names
Listdevices = new ArrayList<>();
Pattern pattern = Pattern.compile("^ *(.*):");
try (FileReader reader = new FileReader("/proc/net/dev")) {
BufferedReader in = new BufferedReader(reader);
String line = null;
while( (line = in.readLine()) != null) {
Matcher m = pattern.matcher(line);
if (m.find()) {
devices.add(m.group(1));
}
}
} catch (IOException e) {
e.printStackTrace();
}
// read the hardware address for each device
for (String device : devices) {
try (FileReader reader = new FileReader("/sys/class/net/" + device + "/address")) {
BufferedReader in = new BufferedReader(reader);
String addr = in.readLine();
System.out.println(String.format("%5s: %s", device, addr));
} catch (IOException e) {
e.printStackTrace();
}
}
} else {
// use standard API for Windows & Others (need to test on each platform, though!!)
}
}
阅读(3566) | 评论(0) | 转发(0) |
java 获取linux mac_java在linux获得ip地址和mac相关推荐
- 使用Java获取发送请求的电脑的IP地址
介绍 客户端所有的请求信息都可以通过HttpServletRequest获得,获取客户端ip可以通过getRemoteAddr()获取. 但是如果客户端是通过代理访问我们的服务器,那么getRemot ...
- java获取dns_Java 根据网址查询DNS/IP地址的方法
说明: 本文不涉及底层的 DNS 协议, 直接使用Java平台提供的API进行操作. DNS也就是 Domain Name Service,即 域名服务. 我们知道, Java中与网址有关的类包括 j ...
- java获取请求者真实的公网ip地址
在java程序中获取浏览者真实的公网ip地址,程序健壮性极好,代码如下: public void downLoad(HttpServletRequest request) {String ip = n ...
- 使用Python获取终端的计算机名、ip地址及mac地址
使用socket获取主机名及ip地址:使用uuid获取mac地址 import socket import uuid#获取计算机名 hostname = socket.gethostname() #根 ...
- QT获取本机的IP地址、mac地址、mask地址和广播IP(Ubuntu QT环境下实现)
1.简介 用QT做网络通讯数据传输时,要先获取本机的网卡的IP地址.mac地址.mask地址和广播IP,以便创建socket进行通讯数据传输. 2.本博文主要封装函数: (1).getIP():获取本 ...
- 一句话脚本系列之获取eth0网卡的IP地址(或MAC地址)
欢迎转载!转载时请注明出处:http://blog.csdn.net/nfer_zhuang/article/details/42609733 引言 使用场景: 我使用的Linux服务器上有多个网卡, ...
- linux ubuntu 获取ip,linux系统(ubuntu)怎么查看ip地址
基于linux内核的国产操作系统是否能够被大众接受是一个至关重要的问题,那么linux的基本操作中,如何查看本机的ip地址呢?下面学习啦小编就以ubuntu为例,来解释这个问题. linux系统(ub ...
- java什么是网络接口_java 网络编程 -- IP地址的表示与网络接口信息的获取(InetAddress和NetworkInterface)...
使用java进行网络程序的开发,可以说是一件令人愉悦的事情,对于用惯了C++网络接口编程的人来说,当他们首次使用Java开发网络应用程序,会发现java开发网络应用是如此的简单,甚至仅用几分钟时间,您 ...
- java获取IP地址和MAC地址方式
java获取IP地址和MAC地址方式 前端和后台都可以获取 ip获取方式比较简单,就不做分析了,主要说mac的获取 前端获取的方式与局限性:尝试好几种方式,这种是最易实现.最简单的方式,确实能获取该浏 ...
- java百分百获取到机器IP地址及MAC码
java百分百获取到机器IP地址及MAC码 已测系统: windows linux unix 排除127.0.0.1 和 0.0.0.0.1等非正常IP import java.net.InetAdd ...
最新文章
- Linux系统的大小端模式
- 利用OpenSSH实现基于秘钥的认证
- Oracle 10G DataGuard搭建
- 一篇文章带你解析,乐观锁与悲观锁的优缺点
- 【Java代码】道格拉斯-普克 Douglas-Peucker 抽稀算法分析及15w个坐标点抽稀到3.7w耗时从360s+优化到365ms接近1000倍的速度提升源码分享(并行流+多线程+泛型)
- 业务总结002:秒杀活动架构设计
- c语言便签程序,Windows7便签程序快捷键
- 从底层重学 Java 之 Stream 初探 Gitchat连接
- php javascript对象,JavaScript 对象
- gRPC-go源码(1):连接管理
- ios plist_iOS属性列表(plist)示例
- 单门课程成绩管理系统用c语言,[转载]C语言课程设计——学生成绩管理系统
- torch.Tensor详解
- 编译Kodi(XBMC 14) 和XBMC-13.2-Gotham版本的记录
- 浏览器及Windows常用快捷键汇总
- 递归概述与递归能解决的问题和规则 [数据结构][Java]
- AVUE 富文本编辑器 avue-plugin-ueditor 格式刷功能 ver.0.2.7
- 用C语言实现一个简单的计算器代码
- ubuntu控制台访问u盘_ubuntu中使用终端查看U盘里的内容
- “2018活水计划”首次调研启动,国内外产学研实现共振
热门文章
- 部署可扩展的目标检测管道:推理过程(下)
- CodeGen准备存储库
- 图像零交叉点,视频生成,视频识别,视频摘要,视频浓缩
- 深度学习模型训练过程
- ADAS摄像头图像环视拼接算法
- Java 类和对象的内存分配机制
- 2021年大数据Flink(三十二):​​​​​​​Table与SQL案例准备 API
- 2021年大数据Spark(二):四大特点
- Python : IndentationError: expected an indented block
- System.err: java.lang.UnsatisfiedLinkError: dlopen failed: library “libc++_shared.so“ not found