import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Inet6Address;
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 TestAddr {
/**
* 获取本机所有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();
System.out.println("---Name---:" + ni.getName());
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]);
}
public static String getLocalIP() {
String ip = "";
try {
Enumeration<?> e1 = (Enumeration<?>) NetworkInterface.getNetworkInterfaces();
while (e1.hasMoreElements()) {
NetworkInterface ni = (NetworkInterface) e1.nextElement();
System.out.println ("getLocalIP--nic.getDisplayName ():" + ni.getDisplayName ());
System.out.println ("getLocalIP--nic.getName ():" + ni.getName ());
if (!ni.getName().equals("eth0")) {
continue;
} else {
Enumeration<?> e2 = ni.getInetAddresses();
while (e2.hasMoreElements()) {
InetAddress ia = (InetAddress) e2.nextElement();
if (ia instanceof Inet6Address)
continue;
ip = ia.getHostAddress();
}
break;
}
}
} catch (SocketException e) {
e.printStackTrace();
System.exit(-1);
}
return ip;
}
public static String getWinLocalIP ()
{
String ip = "";
try
{
Enumeration <?> e1 = (Enumeration <?>) NetworkInterface.getNetworkInterfaces ();
while (e1.hasMoreElements ())
{
NetworkInterface ni = (NetworkInterface) e1.nextElement ();
System.out.println ("getWinLocalIP--nic.getDisplayName ():" + ni.getDisplayName ());
System.out.println ("getWinLocalIP--nic.getName ():" + ni.getName ());
Enumeration <?> e2 = ni.getInetAddresses ();
while (e2.hasMoreElements ())
{
InetAddress ia = (InetAddress) e2.nextElement ();
ip = ia.getHostAddress ();
}
}
}
catch (SocketException e)
{
e.printStackTrace ();
System.exit (-1);
}
return ip;
}
/**
* 获取本机所有物理地址
*
* @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) {
TestAddr.getAllLocalHostIP();
System.out.println("LocalIP:"+TestAddr.getLocalIP());
System.out.println("getWinLocalIP:"+TestAddr.getWinLocalIP());
System.out.println(TestAddr.getMacAddress());
}
}
分享到:
相关推荐
这个主题聚焦在如何在PowerBuilder(PB9)中通过纯代码的方式获取本机的IP地址和MAC地址。IP地址是网络上设备的唯一标识,而MAC地址是物理网络接口控制器的唯一硬件地址。下面我们将深入探讨如何实现这一功能。 ...
本篇内容将详细讲解如何使用C或C++编程语言实现IP地址查询物理地址的功能,以及涉及的相关技术知识点。 1. **ARP协议**: ARP协议是TCP/IP协议栈中的一部分,它允许网络设备通过IP地址找到与其通信的设备的MAC地址...
本文将深入探讨如何在不同的操作系统上获取本机的IP和MAC地址,以及如何判断一个IP地址是否为内网IP,并将字符串形式的IP地址转换为数值表示。我们将主要关注以下几个知识点: 1. **跨平台获取本机IP地址**: 跨...
在各种网络操作中,了解并获取本地计算机的物理(也称为硬件)网卡的IP地址和MAC地址是非常关键的。这些信息对于网络配置、故障排查和安全监控都有重要作用。下面将详细阐述如何获取这些信息,以及它们在网络中的...
在PowerBuilder中,可以使用Winsock控件或者.NET Framework的System.Net.NetworkInformation命名空间来获取本机IP地址。Winsock控件提供了低级别的网络通信功能,可以通过执行适当的Socket命令来获取网络接口的IP...
在IT领域,网络通信是不可或缺的一部分,而获取本机的IP地址和主机名则是网络通信的基础。本篇文章将深入探讨如何在不同的操作系统和编程语言环境下实现这一功能。 首先,主机名是一个标识符,用于在网络中唯一标识...
Java 自动获取本机IP和MAC地址是一项常见的需求,在网络编程和系统管理中经常会用到。这个小工具利用了Java的网络和系统API,能够帮助用户便捷地查看本机的网络配置信息。以下是对相关知识点的详细说明: 1. **Java...
以下是如何获取本地IP地址的步骤: 1. 引入必要的命名空间: ```csharp using System.Net; using System.Net.NetworkInformation; ``` 2. 获取本地IP地址: ```csharp public static string GetLocalIPAddress() {...
总的来说,“本机IP地址查看复制工具”是一个实用的小型应用程序,集成了获取和分享本机网络关键信息的功能,简化了网络管理员和普通用户的操作流程。对于不熟悉命令行操作的用户,这样的图形化工具更易上手。
主机名与IP地址关联,通过DNS(Domain Name System)服务将主机名解析为对应的IP地址,方便用户记忆和使用。同时,主机名可以包含层次结构,如“subdomain.example.com”,表示子域名与顶级域名的关系。 再来说说...
本主题将详细讲解如何利用批处理脚本来获取本机的IP地址、MAC地址以及计算机名。 首先,让我们了解这三个概念的基础知识: 1. IP地址:IP(Internet Protocol)地址是互联网上的设备独一无二的标识,它由32位二...
3. **结果处理和显示**: 将接收到的MAC地址与对应的IP地址进行记录和展示,用户可以查看局域网内的活跃设备及其物理地址。 4. **ARP缓存管理**: 可能包括定期清理或刷新ARP缓存,以保持数据的时效性。 5. **使用...
在VB.NET 2008编程环境中,获取本机的IP地址、网卡MAC地址以及计算机名是常见的系统信息查询任务。这些信息对于网络通信、系统管理以及软件开发都有着重要的作用。下面将详细介绍如何利用VB.NET 2008实现这些功能。 ...
通过输入提供IP地址,自动获取IP地址所在的地区。
本文将深入探讨“本机IP地址浏览”这一主题,基于C#编程语言,讲解如何获取并显示本地计算机的IPv4和IPv6地址以及MAC地址。 首先,我们需要理解IP地址的概念。IP地址(Internet Protocol Address)是互联网上每个...
在Web应用中,我们通常只能获取到IP地址,而无法直接获取物理地址,但可以通过IP反查服务间接获取到地理位置信息。 1. 获取访问者IP地址 在PHP中,有几种方法可以获取用户的IP地址: - `$_SERVER['REMOTE_ADDR']`:...
ARP是TCP/IP协议栈中的一个重要组成部分,它的主要功能是将网络层的IP地址转换为数据链路层的MAC地址,以便于数据帧的正确发送。 描述中提到的“C++实现”,意味着该项目是用C++编程语言编写的,它可能包含了一个或...
在Delphi编程环境中,开发一个能够获取本机IP地址和MAC地址,并将结果显示在文本框的应用程序是一项常见的任务。这个程序的关键在于使用Indy控件库,特别是其中的IdIPWatch组件。首先,我们需要了解一些关于Delphi、...