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.InetAddressimport 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())
}
}