`
jiayj198609
  • 浏览: 149773 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

java获取本地机器所有IP和物理地址

    博客分类:
  • Java
阅读更多
package com.cn;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;

public class Test001 {

	/**
	 * 获取本机所有IP
	 */
	private static String[] getAllLocalHostIP() {
		List<String> res = new ArrayList<String>();
		Enumeration netInterfaces;
		try {
			netInterfaces = NetworkInterface.getNetworkInterfaces();
			InetAddress ip = null;
			while (netInterfaces.hasMoreElements()) {
				NetworkInterface ni = (NetworkInterface) netInterfaces
						.nextElement();
				Enumeration nii = ni.getInetAddresses();
				while (nii.hasMoreElements()) {
					ip = (InetAddress) nii.nextElement();
					if (ip.getHostAddress().indexOf(":") == -1) {
						res.add(ip.getHostAddress());
						System.out.println("本机的ip=" + ip.getHostAddress());
					}
				}
			}
		} catch (SocketException e) {
			e.printStackTrace();
		}
		return (String[]) res.toArray(new String[0]);
	}

	/**
	 * 获取本机所有物理地址
	 * 
	 * @return
	 */
	public static String getMacAddress() {
		String mac = "";
		String line = "";

		String os = System.getProperty("os.name");

		if (os != null && os.startsWith("Windows")) {
			try {
				String command = "cmd.exe /c ipconfig /all";
				Process p = Runtime.getRuntime().exec(command);

				BufferedReader br = new BufferedReader(new InputStreamReader(p
						.getInputStream()));

				while ((line = br.readLine()) != null) {
					if (line.indexOf("Physical Address") > 0) {
						int index = line.indexOf(":") + 2;

						mac = line.substring(index);

						break;
					}
				}

				br.close();

			} catch (IOException e) {
			}
		}

		return mac;
	}

	public String getMacAddress(String host) {
		String mac = "";
		StringBuffer sb = new StringBuffer();

		try {
			NetworkInterface ni = NetworkInterface.getByInetAddress(InetAddress
					.getByName(host));

			byte[] macs = ni.getHardwareAddress();

			for (int i = 0; i < macs.length; i++) {
				mac = Integer.toHexString(macs[i] & 0xFF);

				if (mac.length() == 1) {
					mac = '0' + mac;
				}

				sb.append(mac + "-");
			}

		} catch (SocketException e) {
			e.printStackTrace();
		} catch (UnknownHostException e) {
			e.printStackTrace();
		}

		mac = sb.toString();
		mac = mac.substring(0, mac.length() - 1);

		return mac;
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Test001.getAllLocalHostIP();
		System.out.println(Test001.getMacAddress());
	}

}



运行结果:

     本机的ip=127.0.0.1
    本机的ip=10.15.3.143
    00-13-72-78-A3-8C

分享到:
评论

相关推荐

    Net.rar_ARP java_arp欺骗_ip地址_net

    首先,程序可能会使用`InetAddress`类获取本地IP和广播IP,然后通过`Socket`类尝试与局域网内的所有IP地址建立连接,以此判断哪些地址是可达的。同时,程序可能监听网络流量,分析ARP请求和响应包,检查是否存在异常...

    Get_PC_Info.rar_获取IP地址

    以下是一个简单的示例代码,展示了如何使用JAVA获取本机的IP和MAC地址: ```java import java.net.*; import java.util.Enumeration; public class Get_PC_Info { public static void main(String[] args) throws...

    获取客户端IP、MAC

    以下是一些关于如何在Java环境下获取客户端IP和MAC地址的知识点。 首先,获取客户端IP地址通常涉及到服务器端的编程。在Java中,可以通过`java.net`包中的`Socket`或`HttpServletRequest`类来获取。当客户端发起...

    java 获取mac地址的两种方法(推荐)

    如果只需要获取本地机器的MAC地址,第一种方法更为简单且直接;如果需要查询远程设备的MAC地址,第二种方法可能更适合,但需要注意兼容性和效率问题。在使用第二种方法时,务必确保正确处理各种异常和编码问题,以免...

    Java网络编程课件,Java与Internet

    例如,我们可以使用`getByName`方法获取指定主机名或IP地址的InetAddress对象,或者使用`getLocalHost`方法获取本地主机的InetAddress。InetAddress提供了`getHostAddress`方法来获取IP地址字符串形式,以及`get...

    spring获取weblogic jndi数据源的两种方式

    在这种模式下,Spring可以通过简单的JNDI名称查找来获取数据源,而无需指定任何连接细节如用户名、密码或IP地址和端口号等。这种方式的优点是简单且易于配置。 **配置示例** 在Spring配置文件中,可以通过`org....

    获取本地磁盘的相关信息

    包括获取内存,机器名,IP,物理内存,等相关信息

    基于SpringBoot校验license

    Spring Boot应用可以通过Java的`java.net.NetworkInterface`类获取本地系统的MAC地址,并结合自定义的服务或组件进行匹配检查。 接着是IP地址校验。IP地址是网络通信的基础,通过IP地址可以识别网络上的特定设备。...

    java 论文

    早期网络技术仅限于本地网络中的机器命名,而Java则着眼于全球互联网的规模,引入了IP地址和域名系统(DNS)来解决这一问题。IP地址作为网络设备的数字标识,DNS则提供了一种将人类可读的域名转换为IP地址的服务,从而...

    远程获取mac地址二十一圩五十二玩玩

    - **Python**: 使用`psutil`库可以获取本地MAC地址,而`socket`库配合`arp`命令可以尝试获取远程主机的MAC地址。 - **Java**: 可以使用`java.net.NetworkInterface`类获取MAC地址。 - **C#**: 利用`.NET`框架的`...

    行业分类-设备装置-在至少两台计算设备间建立连接时的地址和端口号提取.zip

    在编程领域,网络库如Python的socket模块、Java的Socket类等,提供了API来创建和管理网络连接,包括设置和读取IP地址和端口号。开发者可以利用这些工具实现客户端-服务器架构,使应用程序能够跨设备通信。 总的来说...

    网络程序设计PPT学习教案.pptx

    Java中的`InetAddress`类是用来封装和操作IP地址的,它可以解析主机名、获取本地主机IP地址、测试IP地址的可达性等。 **14.3 套接字(Socket)** 套接字是网络通信中的基本概念,它是两台机器间通信的端点。在网络...

    在网易蜂巢使用容器发布Java Web应用

    - **可移植性**:容器可以在不同的物理机器或云环境中移动而不影响运行。 - **隔离性**:容器内的应用彼此隔离,互不干扰。 ### 容器与虚拟机的区别 容器和虚拟机都是隔离应用的技术,但是容器的隔离是在操作系统...

    网络编程(Socket套接字编程)_讲义.doc

    在Java中,`InetAddress`类是用来处理IP地址的,它可以获取主机名、IP地址等信息。例如,`getByName(String host)`方法用于根据主机名获取InetAddress对象,`getLocalHost()`方法则返回本地主机的InetAddress对象。 ...

    20151910042-刘鹏-CN实验01-计算机网络平台预备实验1

    1. **查阅本机IP地址**:在命令行界面(CLI)中,通过运行`ipconfig`命令,可以获取计算机的IP地址信息。这有助于理解网络中的设备如何通过IP地址进行通信。 2. **测试连通性**:使用`ping 127.0.0.1`命令检查本地...

    SocketTesting:测试与服务器的套接字连接并查找机器上的网络接口

    MAC地址(物理地址)则可以通过`getHardwareAddress()`获取,但不是所有平台都支持。 4. **SocketTesting项目**: - 根据项目名“SocketTesting”,我们可以推测这是一个用于测试Socket连接的工具,可能包含客户端...

    上海市计算机一级考试基础题.pdf

    6. 计算机系统内部的总线分为控制总线、数据总线和地址总线,它们是计算机内部数据传输的通道。 7. 主存储器由只读存储器(ROM)和随机读取存储器(RAM)组成,RAM用于临时存储运行中的数据。 8. 计算机的基本构造由运算...

    计算机与互联网术语词典

    所有的数据和指令在计算机内部都是以二进制形式存储和处理的。 #### 操作系统(Operating System,OS) 管理计算机硬件与软件资源,控制程序运行的基本系统软件。常见的操作系统包括Windows、macOS、Linux等。 ###...

    android客户端与服务端通信[归类].pdf

    - **IP地址**:IP地址是互联网上的设备独一无二的标识,例如127.0.0.1代表本地主机。 - **端口**:端口是通信的入口,用于区分同一台机器上不同服务。它们是16位的数字,范围是0到65535。 - **协议**:通信双方...

Global site tag (gtag.js) - Google Analytics