文档章节

java 获取本地ip 、所有MAC地址

ForingY
 ForingY
发布于 2016/11/01 15:29
字数 225
阅读 49
收藏 0

代码如下:

package com;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;


public class ProcessBuilderShow {
	 
	 public static void main(String[] args) {
		 List<String> address = ProcessBuilderShow.getPhysicalAddress();
		 for(String add:address){
//	            System.out.printf("物理网卡地址:%s%n", add);
	            System.out.println("物理网卡地址:"+add);
	        }
	 }



                     //ip地址
		         public static String getIPAddress() throws UnknownHostException{
		        	 InetAddress addr = InetAddress.getLocalHost();
	                 String ip=addr.getHostAddress().toString();//获得本机IP 
	                 return ip;
		         } 


        //mac物理地址
	 public static List<String> getPhysicalAddress(){
	        
	        Process p = null;
	        //物理网卡列表
	        List<String> address = new ArrayList<String>();

	        try{
	            //执行ipconfig /all命令
	            p = new ProcessBuilder("ipconfig", "/all").start();
	        }catch (IOException e){
	            return address;
	        }
	        byte[] b = new byte[1024];
	        StringBuffer sb = new StringBuffer();
	        //读取进程输出值
	        InputStream in = p.getInputStream();
	        try{
	            while (in.read(b)>0){
	                sb.append(new String(b));
	            }
	        }catch (IOException e1){
	        }finally{
	            try{
	                in.close();
	            }catch (IOException e2){
	            }
	        }
	        //以下分析输出值,得到物理网卡
	        String rtValue = sb.substring(0);
	        int i = rtValue.indexOf(" . . . . . . . . . . . . :");
	        while(i>0){
	            rtValue = rtValue.substring(i + ". . . . . . . . . . . . . :".length());
	            if(!rtValue.substring(0,18).endsWith("00-00-00-00-00-00")&&!address.contains(rtValue.substring(0,18))){
	            	if(rtValue.substring(0,18).replace(" ", "").replace("-", "").matches("^[a-zA-Z0-9]+$")){
	            		if(rtValue.substring(0,18).replace(" ", "").replace("-", "").length() == 12){
	            			address.add(rtValue.substring(0,18));
	            		}
	            	}
	            }
	            i = rtValue.indexOf(". . . . . . . . . . . . . :");
	        }
	        return address; 
	 }
	}

© 著作权归作者所有

ForingY
粉丝 23
博文 272
码字总数 156129
作品 0
杭州
程序员
私信 提问
java 在局域网中 获取 路由器的 mac 地址

现在 有一个 问题,办公室 是处在一个 小小的 局域网的,本人的 ip 192.168.0.48,现在想在java程序中(不是java也可以,主要是因为java socket 很好用)获取 路由器的 MAC 地址。 但是现在没有...

xianwu13
2013/01/10
2.6K
4
win7 下安装java软件如何做

目前客户要用一个需求,多台客户端机器,每隔几分钟就要往一台服务器发送本机的IP和mac地址,小弟仅会点java,不知道如何用java做一个程序,在win7上可以双击打开执行,至于如何获取发送这个...

java小愤青
2014/04/18
608
3
面向基础系列之---Java网络编程---网络连接组件的使用(InetAddress)

这个系列是我一直想写的,因为从入职第一年的第一个月开始(那时还在zte),我就买了网络上唯一的一本,写Java网络的书籍:《Java网络编程》。当时功底一般,感觉看起来,还是很多云里雾里,...

心中的理想乡
2018/09/10
49
0
使用 Java 测试网络连通性的几种方法

本文由浅入深地介绍了如何使用 Java 类库,判断两台机器之间网络是否可达。本文介绍了 Java 中三种不同的网络可达的判断方法以及针对 IPv4 和 IPv6 混合网络的编程方法。同时也介绍了这些方法...

IBMdW
2012/11/27
7.2K
22
对于Ping的过程,你真的了解吗?

一、概览 对于ping命令,想必只要是程序员都知道吧?当我们检查网络情况的时候,最先使用的命令肯定是ping命令吧?一般我们用ping查看网络情况,主要是检查两个指标,第一个是看看是不是超时...

木木匠
2018/12/23
1K
4

没有更多内容

加载失败,请刷新页面

加载更多

手写RPC框架指北另送贴心注释代码一套

Angular8正式发布了,Java13再过几个月也要发布了,技术迭代这么快,框架的复杂度越来越大,但是原理是基本不变的。所以沉下心看清代码本质很重要,这次给大家带来的是手写RPC框架。 完整代码...

全菜工程师小辉
13分钟前
3
0
【Java】开发收货

简介 谨以此篇,记载开发过程中的一些tips。 编译器 【Shift + F6】可实现变量的联动修改。

Areya
30分钟前
5
0
DOM官方定义

DOM Document Object Model 文档对象模型 DOM的官方定义:W3C的DOM,可以使程序或者脚本(JS或AS\JScript),动态的访问或者操作文档的内容、结构、样式。 DOM只是一个标准,操作网页的标准。...

前端老手
35分钟前
6
0
IT兄弟连 HTML5教程 HTML5的学习线路图 第一阶段学习网页制作

学习HTML5技术可并不是简单学会几个新增的标签而已,HTML5现在可以说是前端所有技术的代名词。需要学习的语言和工具不仅多,对于刚接触他们的新人会感觉很乱。另外,前端开发也会细分很多个开...

老码农的一亩三分地
37分钟前
6
0
可见性有序性,Happens-before来搞定

写在前面 上一篇文章并发 Bug 之源有三,请睁大眼睛看清它们 谈到了可见性/原子性/有序性三个问题,这些问题通常违背我们的直觉和思考模式,也就导致了很多并发 Bug 为了解决 CPU,内存,IO ...

tan日拱一兵
52分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部