java - mac地址问题

标签 java networking

我想获取局域网中另一台计算机的 MAC 地址,我该怎么做?我正在使用 JPCAP

 private void getPackage(JpcapCaptor captor)
  {
      try{
            IPPacket ip = (IPPacket)captor.getPacket();

            for(int a =0 ; a <found.size(); a++ )
            {
                  if(ip.dst_ip.equals(found.get(a)))
                      check = true;

            }

            if(!check)
            {
                 if(ip.dst_ip.isSiteLocalAddress())
                 {
                    host = ip.dst_ip.getHostName();
                      System.out.println("destination ip : " + ip.dst_ip +  " " + ip.dst_ip.getHostName());
                      System.out.println("Source ip : " + ip.src_ip +  " " + ip.src_ip.getHostName());


                                          found.addElement(ip.dst_ip);

                  }
             }

              check = false;
        }catch(Exception ex)
        {
            //Sys.alert("Error" ,"lobby exeption :" +  ex);
            //wegens null reverence exeption
        }
  }

这段代码只是获取IP地址,但我也想要mac地址

最佳答案

http://netresearch.ics.uci.edu/kfujii/Jpcap/doc/javadoc/jpcap/packet/ARPPacket.html

您需要的方法:

公共(public)java.lang.Object getSenderHardwareAddress()

package jpcapExample;
import jpcap.*;
import jpcap.packet.*;
class PacketPrinter implements PacketReceiver {
    public void receivePacket(Packet packet) {
        if (packet instanceof ARPPacket){
            ARPPacket arpp = (ARPPacket) packet;
            Object str = arpp.getSenderHardwareAddress();
            System.out.println("got arp from: " + str.toString());

        }
        System.out.println(packet);
        }
    }
---------------------[ different file ]-------------
    try {
    JpcapCaptor eth0=
        JpcapCaptor.
        openDevice(devices[eth0idx], 65535, false, 20000);
    while (true){
        eth0.processPacket(1233,new PacketPrinter());
    }
} catch (IOException io){
    io.printStackTrace();
}

关于java - mac地址问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6450558/

相关文章:

c++ - NS3 套接字混淆(需要帮助理解)

c - 从套接字 C HTTP 读取

java - 尝试检测 if 语句中的字符

java - [持久性异常 : Error getting sequence nextval]

iphone - 如何衡量在 iOS 中花费的网络时间的分割?

java - 此代码传输的是 1kb 还是位?有点困惑

java - Java 假客户端连接被拒绝

Java、switch case 和数组

java - 有没有类似 LINQPad for Java 的程序? (不是重复的!)

java - Jooq 计数方法被反引号包裹起来