`

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 实现数据包的发送,并监听返回的数据包,分析局域网内返回的...

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

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

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

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

    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...

    java扫描局域网活动主机

    Java扫描局域网活动主机是一项常见的网络管理任务,主要用于检测并获取网络中正在运行的设备信息。这个程序可能是一个小型的Java应用,利用了多线程技术和线程池来提高扫描速度,确保在短时间内高效地完成对局域网内...

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

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

    获取电脑ip通过java代码

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

    java获取公网IP

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

    IP工具类,通过传入的request获取ip地址(JAVA)

    在IT行业中,尤其是在Web开发领域,获取客户端的IP地址是一项常见的任务。这有助于跟踪用户行为、提供地域针对性的服务,甚至进行安全防护。本篇文章将详细解释如何在Java环境下,通过Servlet和Reactive编程模型来...

    java实现局域网传文件

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

    获取android设备的内网IP地址

    8. **代码实践**:实际的Java代码会包含上述步骤的实现,包括初始化网络管理对象,检查权限,获取IP信息,转换IP整数值为字符串,以及处理异常等。 通过这样的demo,开发者可以学习如何在Android环境中动态获取设备...

Global site tag (gtag.js) - Google Analytics