如何用java获得局域网内所有ip?最好用arp方法,ping的太慢

Python016

如何用java获得局域网内所有ip?最好用arp方法,ping的太慢,第1张

需要遍历局域网IP的,大体分为两步:

1.得到局域网网段,可由自己机器的IP来确定

2.根据IP类型,一次遍历局域网内IP地址 给一个JAVA类,编译之后直接运行便可以得到局域网内所有IP,具体怎样使用自己编写相应代码调用便可 代码如下:

package bean

import java.io.*

import java.util.*

需要。

应用层->表示层->会话层->传输层->网络层->数据链路层->物理层

应用层:由用户自己规定,规定各个应用之间消息传递的形式等,包括各机互访协议,分布式数据库协议等。比如常见的协议:HTTP协议(Hyper Text Transfer Protocol)。

表示层:规定传输格式。在满足用户需求的基础上,尽可能节省传输费用而设置的,比如传输压缩文件,jpeg或者加密文件等格式。

会话层:用于建立和拆除会话,发送的数据,但是有那么多进程,具体哪个进程需要用到这个数据,则把他输送到那个进程。

传输层:负责将来自会话层的消息传递给网络层。人为制定出单位,分成一个个的信息段,从中又衍生了报文,结合上面几层,我们就可以有目标的发送正确数据给某台计算机了。传输层有两个重要的协议:TCP和UDP。

网络层:IP选址及其路由选择。常见的网络层协议有IP,ICMP以及ARP等协议。前两层都是在于可以发数据,以及发的数据是否正确,然而如果连着两台电脑还行,多台电脑而又只想让其中一台可以通信,则需要路由。选择性的发,那每台电脑就得有自己的身份,于是出现了IP协议等。

数据链路层:提供介质访问和连接管理。

物理层:规定一些机电性能,也包括工作方式如双工(电话)、单工(打印机)或半双工(传呼机),建立通信的启动和终止等。

import java.net.InetAddress

import java.net.NetworkInterface

import java.net.SocketException

import java.net.UnknownHostException

/*

 * 物理地址是48位,别和ipv6搞错了

 */

public class LOCALMAC {

/**

 * @param args

 * @throws UnknownHostException 

 * @throws SocketException 

 */

public static void main(String[] args) throws UnknownHostException, SocketException {

// TODO Auto-generated method stub

//得到IP,输出PC-201309011313/122.206.73.83

InetAddress ia = InetAddress.getLocalHost()

System.out.println(ia)

getLocalMac(ia)

}

private static void getLocalMac(InetAddress ia) throws SocketException {

// TODO Auto-generated method stub

//获取网卡,获取地址

byte[] mac = NetworkInterface.getByInetAddress(ia).getHardwareAddress()

System.out.println("mac数组长度:"+mac.length)

StringBuffer sb = new StringBuffer("")

for(int i=0 i<mac.length i++) {

if(i!=0) {

sb.append("-")

}

//字节转换为整数

int temp = mac[i]&0xff

String str = Integer.toHexString(temp)

System.out.println("每8位:"+str)

if(str.length()==1) {

sb.append("0"+str)

}else {

sb.append(str)

}

}

System.out.println("本机MAC地址:"+sb.toString().toUpperCase())

}

}