以前在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相关推荐

  1. 使用Java获取发送请求的电脑的IP地址

    介绍 客户端所有的请求信息都可以通过HttpServletRequest获得,获取客户端ip可以通过getRemoteAddr()获取. 但是如果客户端是通过代理访问我们的服务器,那么getRemot ...

  2. java获取dns_Java 根据网址查询DNS/IP地址的方法

    说明: 本文不涉及底层的 DNS 协议, 直接使用Java平台提供的API进行操作. DNS也就是 Domain Name Service,即 域名服务. 我们知道, Java中与网址有关的类包括 j ...

  3. java获取请求者真实的公网ip地址

    在java程序中获取浏览者真实的公网ip地址,程序健壮性极好,代码如下: public void downLoad(HttpServletRequest request) {String ip = n ...

  4. 使用Python获取终端的计算机名、ip地址及mac地址

    使用socket获取主机名及ip地址:使用uuid获取mac地址 import socket import uuid#获取计算机名 hostname = socket.gethostname() #根 ...

  5. QT获取本机的IP地址、mac地址、mask地址和广播IP(Ubuntu QT环境下实现)

    1.简介 用QT做网络通讯数据传输时,要先获取本机的网卡的IP地址.mac地址.mask地址和广播IP,以便创建socket进行通讯数据传输. 2.本博文主要封装函数: (1).getIP():获取本 ...

  6. 一句话脚本系列之获取eth0网卡的IP地址(或MAC地址)

    欢迎转载!转载时请注明出处:http://blog.csdn.net/nfer_zhuang/article/details/42609733 引言 使用场景: 我使用的Linux服务器上有多个网卡, ...

  7. linux ubuntu 获取ip,linux系统(ubuntu)怎么查看ip地址

    基于linux内核的国产操作系统是否能够被大众接受是一个至关重要的问题,那么linux的基本操作中,如何查看本机的ip地址呢?下面学习啦小编就以ubuntu为例,来解释这个问题. linux系统(ub ...

  8. java什么是网络接口_java 网络编程 -- IP地址的表示与网络接口信息的获取(InetAddress和NetworkInterface)...

    使用java进行网络程序的开发,可以说是一件令人愉悦的事情,对于用惯了C++网络接口编程的人来说,当他们首次使用Java开发网络应用程序,会发现java开发网络应用是如此的简单,甚至仅用几分钟时间,您 ...

  9. java获取IP地址和MAC地址方式

    java获取IP地址和MAC地址方式 前端和后台都可以获取 ip获取方式比较简单,就不做分析了,主要说mac的获取 前端获取的方式与局限性:尝试好几种方式,这种是最易实现.最简单的方式,确实能获取该浏 ...

  10. java百分百获取到机器IP地址及MAC码

    java百分百获取到机器IP地址及MAC码 已测系统: windows linux unix 排除127.0.0.1 和 0.0.0.0.1等非正常IP import java.net.InetAdd ...

最新文章

  1. Linux系统的大小端模式
  2. 利用OpenSSH实现基于秘钥的认证
  3. Oracle 10G DataGuard搭建
  4. 一篇文章带你解析,乐观锁与悲观锁的优缺点
  5. 【Java代码】道格拉斯-普克 Douglas-Peucker 抽稀算法分析及15w个坐标点抽稀到3.7w耗时从360s+优化到365ms接近1000倍的速度提升源码分享(并行流+多线程+泛型)
  6. 业务总结002:秒杀活动架构设计
  7. c语言便签程序,Windows7便签程序快捷键
  8. 从底层重学 Java 之 Stream 初探 Gitchat连接
  9. php javascript对象,JavaScript 对象
  10. gRPC-go源码(1):连接管理
  11. ios plist_iOS属性列表(plist)示例
  12. 单门课程成绩管理系统用c语言,[转载]C语言课程设计——学生成绩管理系统
  13. torch.Tensor详解
  14. 编译Kodi(XBMC 14) 和XBMC-13.2-Gotham版本的记录
  15. 浏览器及Windows常用快捷键汇总
  16. 递归概述与递归能解决的问题和规则 [数据结构][Java]
  17. AVUE 富文本编辑器 avue-plugin-ueditor 格式刷功能 ver.0.2.7
  18. 用C语言实现一个简单的计算器代码
  19. ubuntu控制台访问u盘_ubuntu中使用终端查看U盘里的内容
  20. “2018活水计划”首次调研启动,国内外产学研实现共振

热门文章

  1. 部署可扩展的目标检测管道:推理过程(下)
  2. CodeGen准备存储库
  3. 图像零交叉点,视频生成,视频识别,视频摘要,视频浓缩
  4. 深度学习模型训练过程
  5. ADAS摄像头图像环视拼接算法
  6. Java 类和对象的内存分配机制
  7. 2021年大数据Flink(三十二):​​​​​​​Table与SQL案例准备 API
  8. 2021年大数据Spark(二):四大特点
  9. Python : IndentationError: expected an indented block
  10. System.err: java.lang.UnsatisfiedLinkError: dlopen failed: library “libc++_shared.so“ not found