java获得IP地址

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java获得IP地址相关的知识,希望对你有一定的参考价值。

我想用java获得本机的IP地址,请高手指教。
我用的是宽带拨号上网,在dos窗口中用ipconfig命令输出如下:
C:\Documents and Settings\ASUS>ipconfig

Windows IP Configuration

Ethernet adapter 本地连接:

Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 10.1.41.101
Subnet Mask . . . . . . . . . . . : 255.0.0.0
Default Gateway . . . . . . . . . : 10.1.41.1

Ethernet adapter 无线网络连接:

Media State . . . . . . . . . . . : Media disconnected

Ethernet adapter SoftEther Virtual LAN Connection:

Media State . . . . . . . . . . . : Media disconnected

PPP adapter 宽带连接:

Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 121.229.6.189
Subnet Mask . . . . . . . . . . . : 255.255.255.255
Default Gateway . . . . . . . . . : 121.229.6.189
用一般的java方法输出的是本地连接的ip:10.1.41.101,而我需要的是宽带连接的ip:121.119.6.189。
请问各位大侠,有什么java方法可以解决这个问题?
用java的方法在程序中获得本机IP地址,不是人动手查...

下面有一篇文章,介绍若何读取物理网卡的地址 ,同样的
你可以用这个方法读取你所需要的本机IP地址

=======================================================
J2SE5.0新特性之ProcessBuilder
这个例子使用了J2SE5.0的ProcessBuilder类执行外部的程序,相对于 Runtime.exec ,它更方便,可以设置环境变量等。这里使用它在windows下读取物理网卡的地址

package com.kuaff.jdk5package;

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

public class ProcessBuilderShow

public static List getPhysicalAddress()

Process p = null;
//物理网卡列表
List address = new ArrayList();

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("Physical Address. . . . . . . . . :");
while(i>0)

rtValue = rtValue.substring(i + "Physical Address. . . . . . . . . :".length());
address.add(rtValue.substring(0,18));
i = rtValue.indexOf("Physical Address. . . . . . . . . :");

return address;

public static void main(String[] args)

List address = ProcessBuilderShow.getPhysicalAddress();
for(String add:address)

System.out.printf("物理网卡地址:%s%n", add);


参考技术A 简单实现代码如下:
js获取来源页地址方法:
var url = document.referrer;
document.write(url);
jsp获取来源页地址方法:
String url = request.getHeader(”Referer”);
System.out.println(url);
对比两个方法:
1.js里是”referrer”,jsp里是”referer”,前者比后者多一个”r”;
2.前者如直接输入网址,则显示为空,后者显示null;
import java.net.*;

public class ip5

public static void main(String args[]) throws Exception

String ip = InetAddress.getLocalHost().getHostAddress();

System.out.println(ip);



参考技术B ipconfig -all 试试 参考技术C 我晕,
直接InetAddress.getLocalHost()不就够了,
不懂的去看API,不要提这样的问题了,浪费分啊
参考技术D request里面有这个方法,直接获取系统当前IP

在linux用java根据ip获得mac地址?

找了很多地方实在找不到了,求高手帮忙给段java代码,可以在Linux下获取客户端mac地址的代码,感激不尽,在线等待。。。急。

try 
  ip = InetAddress.getLocalHost();
  NetworkInterface network = NetworkInterface.getByInetAddress(ip);
  if (network != null) 
    byte[] mac = network.getHardwareAddress();
    if(mac != null) 
      System.out.print("MAC address : ");
      StringBuilder sb = new StringBuilder();
      for (int i = 0; i < mac.length; i++) 
        sb.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : ""));        
      
      System.out.println(sb.toString());  
   
 catch (UnknownHostException e) 
  e.printStackTrace();
 catch (SocketException e) 
  e.printStackTrace();

参考技术A 调linux命令:arp <ip地址>
返回字符串中截取mac地址

以上是关于java获得IP地址的主要内容,如果未能解决你的问题,请参考以下文章

java 怎样利用IP地址获得局域网计算机的名字、mac地址、工作组?

java如何查询本机ip地址和mac地址

java 怎样利用IP地址获得局域网计算机的名字、mac地址、工作组?

JAVA Servlet获取IP地址问题

java 获取客户端ip地址

jquery获取客户端ip地址