`

java 获取局域网内IP

    博客分类:
  • Java
阅读更多

java,如何获取局域网内所有的ip呢?

如何扫描局域网内的所有ip呢?

代码如下:

package com.jn.lan;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.util.StringTokenizer;
import java.util.Vector;

import com.common.util.SystemHWUtil;
import com.string.widget.util.ValueWidget;

public class LANIP {
	public static InetAddress[] getAllOnline() {
		// TODO Auto-generated method stub
		Vector v = new Vector(50);
		try {
			// Process process1 =
			// Runtime.getRuntime().exec("ping -w 2 -n 1 192.168.1.%i");
			// process1.destroy();
			Process process = Runtime.getRuntime().exec("arp -a");
			InputStreamReader inputStr = new InputStreamReader(
					process.getInputStream(), "GBK");
			BufferedReader br = new BufferedReader(inputStr);
			String temp = "";
			br.readLine();
			br.readLine();
			br.readLine();// 此后开始读取IP地址,之前为描述信息,忽略。
			while ((temp = br.readLine()) != null) {
				System.out.println(temp);
				if (!ValueWidget.isNullOrEmpty(temp)) {
					StringTokenizer tokens = new StringTokenizer(temp);
					String x;
					InetAddress add=null;
					try {
						add = InetAddress.getByName(x = tokens
								.nextToken());
					} catch (java.net.UnknownHostException e) {
						continue;
					}
					// System.out.println(x);
					v.add(add);
					// System.out.println(add);
				}
			}
			System.out.println(SystemHWUtil.DIVIDING_LINE);
			v.add(InetAddress.getLocalHost());
			process.destroy();
			br.close();
			inputStr.close();
		} catch (Exception e) {
			System.out.println("可能是网络不可用。");
			e.printStackTrace();
		}
		int cap = v.size();
		InetAddress[] addrs = new InetAddress[cap];
		for (int i = 0; i < cap; i++) {
			addrs[i] = (InetAddress) v.elementAt(i);
			 System.out.println(addrs[i]);
		}
		return addrs;

	}

	public static void main(String args[]) {
		InetAddress[] i = new LANIP().getAllOnline();
	}
}

 运行结果:

  169.254.255.255       ff-ff-ff-ff-ff-ff     静态        
  224.0.0.2             01-00-5e-00-00-02     静态        
  224.0.0.22            01-00-5e-00-00-16     静态        
  224.0.0.252           01-00-5e-00-00-fc     静态        
  226.81.9.8            01-00-5e-51-09-08     静态        
  239.255.255.250       01-00-5e-7f-ff-fa     静态        
  255.255.255.255       ff-ff-ff-ff-ff-ff     静态        

接口: 169.254.190.162 --- 0xd
  Internet 地址         物理地址              类型
  169.254.255.255       ff-ff-ff-ff-ff-ff     静态        
  224.0.0.2             01-00-5e-00-00-02     静态        
  224.0.0.22            01-00-5e-00-00-16     静态        
  224.0.0.252           01-00-5e-00-00-fc     静态        
  226.81.9.8            01-00-5e-51-09-08     静态        
  239.255.255.250       01-00-5e-7f-ff-fa     静态        
  255.255.255.255       ff-ff-ff-ff-ff-ff     静态        

接口: 192.168.1.105 --- 0x14
  Internet 地址         物理地址              类型
  192.168.1.1           00-21-5d-3c-79-16     动态        
  192.168.1.106         b8-76-3f-a6-a8-e9     动态        
  192.168.1.109         60-d8-19-14-6c-55     动态        
  192.168.1.110         00-21-5d-3c-79-16     动态        
  192.168.1.255         ff-ff-ff-ff-ff-ff     静态        
  224.0.0.2             01-00-5e-00-00-02     静态        
  224.0.0.22            01-00-5e-00-00-16     静态        
  224.0.0.252           01-00-5e-00-00-fc     静态        
  239.255.255.250       01-00-5e-7f-ff-fa     静态        
  255.255.255.255       ff-ff-ff-ff-ff-ff     静态        

接口: 192.168.137.1 --- 0x15
  Internet 地址         物理地址              类型
  192.168.137.182       84-7a-88-cf-87-35     动态        
  192.168.137.255       ff-ff-ff-ff-ff-ff     静态        
  224.0.0.2             01-00-5e-00-00-02     静态        
  224.0.0.22            01-00-5e-00-00-16     静态        
  224.0.0.252           01-00-5e-00-00-fc     静态        
  239.255.255.250       01-00-5e-7f-ff-fa     静态        
  255.255.255.255       ff-ff-ff-ff-ff-ff     静态        
---------------------------------------
/169.254.255.255
/224.0.0.2
/224.0.0.22
/224.0.0.252
/226.81.9.8
/239.255.255.250
/255.255.255.255
/169.254.255.255
/224.0.0.2
/224.0.0.22
/224.0.0.252
/226.81.9.8
/239.255.255.250
/255.255.255.255
/192.168.1.1
/192.168.1.106
/192.168.1.109
/192.168.1.110
/192.168.1.255
/224.0.0.2
/224.0.0.22
/224.0.0.252
/239.255.255.250
/255.255.255.255
/192.168.137.182
/192.168.137.255
/224.0.0.2
/224.0.0.22
/224.0.0.252
/239.255.255.250
/255.255.255.255
wh-THINK/169.254.86.27

 

1
1
分享到:
评论
3 楼 章鱼1993 2015-04-07  
arp -a只能获取最近时间内和自己通信过的IP地址吧
2 楼 hw1287789687 2014-01-22  
amberlike 写道
HI,你好,请问就一个arp -a能够获取局域网内所有的ip吗?

我也不确定。经过测试,基本上可以找到局域网大部分ip
1 楼 amberlike 2014-01-22  
HI,你好,请问就一个arp -a能够获取局域网内所有的ip吗?

相关推荐

    java获取局域网ip列表

    使用java获取所在局域网的所有在用ip,可以检测目前有哪些ip在使用

    基于 Java 使用 ARP 协议获取局域网内部活动主机的物理地址【100011074】

    首先寻找并打开适合的网络适配器,然后根据输入的局域网 IP 地址构造 ARP 的数据包,然后通过 Java 对网卡数据捕获需要用到 jpcap,jpcap 调用 wincap 实现数据包的发送,并监听返回的数据包,分析局域网内返回的...

    Android 极速获取局域网在线设备信息

    本节将深入探讨如何在Android系统中实现高效、快速地获取局域网设备的IP和MAC地址,以及如何优化这个过程。 首先,我们要明白获取局域网设备信息的基本原理。通常,我们使用ARP(Address Resolution Protocol)协议...

    JAVA实现局域网桌面共享

    首先,JAVA是一种广泛使用的跨平台编程语言,它的网络编程能力强大,适合处理局域网内的通信问题。实现桌面共享,关键在于创建一个服务器端应用,用于接收和广播共享的桌面图像数据,以及一个客户端应用,用于连接...

    获取局域网IP获取局域网IP获取局域网IP

    在提供的压缩包文件名“获取局域网IP.exe”中,这可能是一个Windows应用程序,用于帮助用户快速获取其局域网IP。运行这个程序,用户无需通过命令行或系统设置即可直观地查看自己的局域网IP地址,方便不熟悉命令行...

    andriod获取局域网内的设备ip跟mac地址

    在Android开发中,获取局域网内设备的IP和MAC地址是常见的需求,尤其是在构建网络相关的应用程序时。Eclipse是一款广泛使用的集成开发环境(IDE),适用于Android应用开发,而5+app则可能指的是针对Android 5.0及...

    Servlet实现前台样式的使用ARP协议获取局域网内活动主机物理地址

    本文将深入探讨如何使用Java Servlet结合ARP协议来获取局域网内的活动主机物理地址,并结合前台样式实现这一功能。我们将涵盖ARP协议的基本原理、Java Servlet的使用以及如何与前端交互。 首先,ARP协议是TCP/IP...

    java编写Socket扫描程序,识别局域网内活跃的主机

    1. **获取局域网内IP地址范围**:首先,我们需要知道局域网的IP地址范围。通常,它会是一个类似192.168.1.0/24的子网,其中0.0.0.0到255.255.255.255表示可能的IP地址。我们可以使用`InetAddress`类的`getAllByName...

    Android通过Onvif协议发现并获取局域网内摄像头播放地址

    在Android平台上,通过Onvif(Open Network Video Interface Forum)协议来发现并获取局域网内的摄像头播放地址是一项重要的技术应用。Onvif是一种开放的标准,旨在定义网络视频设备之间的接口,使得不同厂商的视频...

    java获取公网IP

    总结来说,Java获取公网IP地址主要依赖于网络请求和第三方服务的配合。`ExternalIpAddressFetcher.java` 类提供了一个简单的方法来实现这个功能,通过向Amazon AWS提供的公共IP检查服务发起HTTP请求,并解析返回的IP...

    获取电脑ip通过java代码

    java代码获取本地ip 一个分装好的小的工具类

    使用ARP协议获取局域网内活动主机ip地址程序源码

    本项目提供的是一段使用C++编程语言编写的源码,其功能是扫描局域网内的活动主机并获取它们的IP地址。源码中可能包含以下几个关键部分: 1. **ARP包构造**:程序会构造ARP请求报文,其中包含发送方的IP和MAC地址,...

    java 局域网数据包嗅探

    Java 局域网数据包嗅探是一个涉及到网络编程和数据包分析的技术,主要利用Java语言和JPCAP库来实现。JPCAP(Java Packet Capture)是一个强大的库,专为在Java环境中处理网络数据包而设计。下面我们将深入探讨这个...

    java写局域网通讯工具(只需jdk1.7即可运行!)

    Java局域网通讯工具是一种基于Socket编程实现的通信软件,它可以允许在同一个局域网内的设备之间进行信息交流。这个工具特别之处在于它只需要Java Development Kit(JDK)1.7版本即可运行,这意味着它兼容性较好,...

    局域网内ip发现和mac发现

    请注意,由于安全和隐私原因,直接通过Java获取远程设备的MAC地址可能受到限制,通常需要在同一子网内。 在实际应用中,你可能需要结合数据库来存储和管理这些信息。数据库可以帮助你跟踪设备的变化,进行历史记录...

    快速获取局域网各网段电脑ip及电脑用户名源码

    本文将详细解析如何快速获取局域网内各个网段的电脑IP地址以及电脑的名称,这有助于网络管理员进行设备监控、故障排查和资源管理。我们将主要讨论以下几个方面: 1. **局域网基础知识**:局域网(Local Area ...

    通过IP获取局域网计算机共享文件列表

    标题"通过IP获取局域网计算机共享文件列表"揭示了我们需要利用特定的技术手段来探测并列举出局域网内指定IP地址计算机上开放的共享资源。以下将详细阐述这个过程涉及的知识点: 1. **网络编程基础**:首先,理解...

    基于java的局域网文件管理系统

    2. **局域网通信**:系统能够处理局域网内的数据传输,这意味着它需要理解和利用网络协议,如TCP/IP,进行数据包的发送和接收,确保文件能在同一网络中的设备之间安全、高效地传输。 3. **客户端-服务器架构**:CS...

    java实现局域网传文件

    在Java编程环境中,实现局域网内的文件传输是一项常见的任务,尤其在开发多机协作或者分布式系统时。本文将深入探讨如何使用Java实现这一功能,包括基本原理、关键技术和实践步骤。 首先,我们需要理解局域网(LAN...

    通过ping方式,获取局域网所有ip,然后通过ip获取mac地址

    本文将深入探讨如何通过ping命令获取局域网内的所有IP地址,并进一步利用这些IP来获取对应的MAC地址。 首先,让我们了解基础知识。IP(Internet Protocol)地址是一个数字标签,用于唯一标识网络上的每台设备。它...

Global site tag (gtag.js) - Google Analytics