开始我在Linux下用InetAddress.getLocalHost()方法获取本机IP地址,
得到的结果总是:127.0.1.1。
原来这个是etc/hosts文件中的配置,并非网卡的IP地址。
后来多方寻访,终于得下以下代码,
运行后在控制台输出IP与
开始我在Linux下用InetAddress.getLocalHost()方法获取本机IP地址,
得到的结果总是:127.0.1.1。
原来这个是etc/hosts文件中的配置,并非网卡的IP地址。
后来多方寻访,终于得下以下代码,
运行后在控制台输出IP与MAC地址。
import java.net.*;
import java.util.*;
public class getIP {
public static void main(String[] args) {
getIP t = new getIP();
System.out.println(t.getLocalIP());
System.out.println(t.getMacAddr());
}
public String getMacAddr() {
String MacAddr = "";
String str = "";
try {
NetworkInterface NIC = NetworkInterface.getByName("eth0");
byte[] buf = NIC.getHardwareAddress();
for (int i = 0; i < buf.length; i++) {
str = str + byteHEX(buf[i]);
}
MacAddr = str.toUpperCase();
} catch (SocketException e) {
e.printStackTrace();
System.exit(-1);
}
return MacAddr;
}
public String getLocalIP() {
String ip = "";
try {
Enumeration<?> e1 = (Enumeration<?>) NetworkInterface.getNetworkInterfaces();
while (e1.hasMoreElements()) {
NetworkInterface ni = (NetworkInterface) e1.nextElement();
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;
}
/* 一个将字节转化为十六进制ASSIC码的函数 */
public static String byteHEX(byte ib) {
char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a','b', 'c', 'd', 'e', 'f' };
char[] ob = new char[2];
ob[0] = Digit[(ib >>> 4) & 0X0F];
ob[1] = Digit[ib & 0X0F];
String s = new String(ob);
return s;
}
}
在Windows下获得硬件地址,windows 7 测试可用:
import java.net.*;
import java.util.*;
public class GetIP
{
public static void main (String[] args)
{
GetIP t = new GetIP ();
//System.out.println (t.getLocalIP ());
System.out.println (t.getMacAddr ());
}
public String getMacAddr ()
{
String MacAddr = "";
String str = "";
try
{
Enumeration <NetworkInterface> em = NetworkInterface.getNetworkInterfaces ();
while (em.hasMoreElements ())
{
NetworkInterface nic = em.nextElement ();
//System.out.println ("nic.getDisplayName ():" + nic.getDisplayName ());
//System.out.println ("nic.getName ():" + nic.getName ());
byte[] b = nic.getHardwareAddress ();
if (b == null)
{
continue;
}
for (int i = 0; i < b.length; i++)
{
System.out.print (byteHEX(b[i])+"-");
}
System.out.println ();
}
}
catch (SocketException e)
{
e.printStackTrace ();
System.exit (-1);
}
return MacAddr;
}
public String getLocalIP ()
{
String ip = "";
try
{
Enumeration <?> e1 = (Enumeration <?>) NetworkInterface.getNetworkInterfaces ();
while (e1.hasMoreElements ())
{
NetworkInterface ni = (NetworkInterface) e1.nextElement ();
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;
}
/* 一个将字节转化为十六进制ASSIC码的函数 */
public static String byteHEX (byte ib)
{
char[] Digit =
{ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
char[] ob = new char[2];
ob[0] = Digit[(ib >>> 4) & 0X0F];
ob[1] = Digit[ib & 0X0F];
String s = new String (ob);
return s;
}
}
分享到:
相关推荐
在Java编程中,获取本机IP地址是一项常见的任务,它涉及到网络编程的基础知识。本机IP地址是指设备连接到网络时所使用的唯一标识符。在Java中,有多种方法可以获取本机IP地址,但主要涉及到`java.net`包中的类和方法...
在Java编程中,实现“Java获得本机IP自动上传ftp”的功能涉及到两个主要部分:获取本机IP地址和使用FTP(File Transfer Protocol)协议进行文件上传。以下将详细阐述这两个部分的知识点。 首先,让我们来看看如何...
在Java编程中,获取本机IP地址是一项常见的任务,特别是在网络通信和服务器开发中。本文将详细介绍如何在Java中获取本机IP,并针对不同操作系统可能出现的问题进行解析。 首先,最简单的方法是使用`InetAddress`类...
在Java编程中,发送邮件和获取IP地址是两个常见的任务,尤其在系统集成、通知服务或者数据通信中。下面将详细讲解这两个知识点。 首先,让我们来看看如何使用Java发送邮件。在Java中,我们通常使用JavaMail API来...
总结来说,Java获取公网IP地址主要依赖于网络请求和第三方服务的配合。`ExternalIpAddressFetcher.java` 类提供了一个简单的方法来实现这个功能,通过向Amazon AWS提供的公共IP检查服务发起HTTP请求,并解析返回的IP...
java程序 获取ip某个主机地址 获得本机的ip地址 java程序 获取ip某个主机地址 获得本机的ip地址
通过url链接到一个网址,该网址返回自己的ip地址(通过代理服务器访问)
在本文中,我们将深入探讨如何使用Java编程语言创建一个Swing界面应用,该应用能够修改本地计算机的IP地址。这个程序允许用户存储多个预设IP地址,并方便地在它们之间切换,同时也支持删除不需要的IP配置。我们将会...
在Java编程中,获取IP地址是一项常见的任务,特别是在网络编程和服务器开发中。这个"java IP地址工具类"是为了解决这个问题而设计的。它提供了便捷的方法来获取和处理IP地址,尤其对于获取客户端IP地址在Web应用中至...
Java获取本机MAC地址IP地址主机名
非常清楚的介绍了如何使用Java获取本机IP地址,有源码
Java 自动获取本机IP和MAC地址是一项常见的需求,在网络编程和系统管理中经常会用到。这个小工具利用了Java的网络和系统API,能够帮助用户便捷地查看本机的网络配置信息。以下是对相关知识点的详细说明: 1. **Java...
在IT行业中,获取本机IP地址是一项常见的任务,特别是在网络编程和系统管理中。IP地址是互联网协议(Internet Protocol)中的标识符,用于区分网络上的设备。本机IP地址指的是设备连接到网络时所使用的地址。以下是...
在Java Web开发中,有时我们需要获取客户端的IP地址甚至是MAC地址,以便进行安全验证、用户行为追踪等操作。本文将详细介绍如何通过Java来实现这一功能。 #### 一、获取客户端 IP 地址 获取客户端的IP地址通常在...
### Java获取客户端真实IP地址详解 在Web开发中,获取客户端的真实IP地址是一个常见的需求,尤其是在需要进行地理位置定位、安全审计、流量统计等场景下。然而,在存在反向代理服务器的环境中,传统的`request....
java获取当前主机的外网ip,简单方便。
在本文中,我们将详细介绍Java获取Linux服务器上的IP操作,包括Linux服务器上的网络接口、回环接口、获取IP地址的方法等。 Linux服务器上的网络接口 在Linux服务器上,网络接口是用来发送和接受数据包的基本设备...
下面将详细介绍如何使用Java获取计算机名和IP地址。 首先,我们来看如何获取计算机名。计算机名通常指的是主机在网络中的标识符,可以通过`java.lang`包中的`InetAddress`类来获取。以下是一个简单的示例: ```...
当我们构建一个基于Servlet的Web应用程序时,有时需要获取访问用户的真实IP地址,这在处理用户请求、日志记录或者实现地理位置相关的功能时尤为关键。 Servlet是Java服务器端的一种组件,它扩展了Web服务器的功能,...