iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >java实现通过IP地址获取mac(物理地址)
  • 632
分享到

java实现通过IP地址获取mac(物理地址)

javatcp/ipmacos 2023-09-01 17:09:49 632人浏览 泡泡鱼
摘要

java实现通过IP地址获取Mac(物理地址),只能获取到局域网的mac地址,具体代码如下: package com.qcmsa.util;import org.apache.commons.log

java实现通过IP地址获取Mac(物理地址),只能获取到局域网的mac地址,具体代码如下:
在这里插入图片描述

package com.qcmsa.util;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import java.io.IOException;import java.net.*;public class UdpGetClientMacAddr {    private static Log log = LogFactory.getLog(UdpGetClientMacAddr.class);    private String         remoteAddr;    private int            remotePort = 137;    private byte[]         buffer      = new byte[1024];    private DatagramSocket ds          = null;    public UdpGetClientMacAddr(String strAddr) throws Exception {        remoteAddr = strAddr;        ds = new DatagramSocket();    }    //发送数据包    protected final DatagramPacket send(final byte[] bytes) throws IOException {        DatagramPacket dp = new DatagramPacket(bytes, bytes.length, InetAddress.getByName(remoteAddr), remotePort);        ds.send(dp);        return dp;    }    //接收数据包    protected final DatagramPacket receive() {        DatagramPacket dp = new DatagramPacket(buffer, buffer.length);        try {            ds.setSoTimeout(3000);            ds.receive(dp);        }catch(SocketTimeoutException  ex) {            log.info("接收数据超时...,不能获取客户端MAC地址");            //  throw new SocketTimeoutException("连接超时");        }  catch (SocketException e1) {            log.error("发生Sorcket异常..."+e1.getMessage());            e1.printStackTrace();        }catch (IOException e2) {            log.error("发生IO异常..."+e2.getMessage());        }        return dp;    }    // 询问包结构:    // Transaction ID 两字节(16位) 0x00 0x00    // Flags 两字节(16位) 0x00 0x10    // Questions 两字节(16位) 0x00 0x01    // AnswerRRs 两字节(16位) 0x00 0x00    // AuthorityRRs 两字节(16位) 0x00 0x00    // AdditionalRRs 两字节(16位) 0x00 0x00    // Name:array [1..34] 0x20 0x43 0x4B 0x41(30个) 0x00 ;    // Type:NBSTAT 两字节 0x00 0x21    // Class:INET 两字节(16位)0x00 0x01    protected byte[] getQueryCmd() throws Exception {        byte[] t_ns = new byte[50];        t_ns[0] = 0x00;        t_ns[1] = 0x00;        t_ns[2] = 0x00;        t_ns[3] = 0x10;        t_ns[4] = 0x00;        t_ns[5] = 0x01;        t_ns[6] = 0x00;        t_ns[7] = 0x00;        t_ns[8] = 0x00;        t_ns[9] = 0x00;        t_ns[10] = 0x00;        t_ns[11] = 0x00;        t_ns[12] = 0x20;        t_ns[13] = 0x43;        t_ns[14] = 0x4B;        for (int i = 15; i < 45; i++) {            t_ns[i] = 0x41;        }        t_ns[45] = 0x00;        t_ns[46] = 0x00;        t_ns[47] = 0x21;        t_ns[48] = 0x00;        t_ns[49] = 0x01;        return t_ns;    }    // 表1 “UDP-NetBiOS-NS”应答包的结构及主要字段一览表    // 序号 字段名 长度    // 1 Transaction ID 两字节(16位)    // 2 Flags 两字节(16位)    // 3 Questions 两字节(16位)    // 4 AnswerRRs 两字节(16位)    // 5 AuthorityRRs 两字节(16位)    // 6 AdditionalRRs 两字节(16位)    // 7 Name 34字节(272位)    // 8 Type:NBSTAT 两字节(16位)    // 9 Class:INET 两字节(16位)    // 10 Time To Live 四字节(32位)    // 11 Length 两字节(16位)    // 12 Number of name 一个字节(8位)    // NetBIOS Name Info 18×Number Of Name字节    // Unit ID 6字节(48位    protected final String getMacAddr(byte[] brevdata) throws Exception {        // 获取计算机名        //   System.out.println(new String(brevdata, 57, 18));        //   System.out.println(new String(brevdata, 75, 18));        //   System.out.println(new String(brevdata, 93, 18));        int i = brevdata[56] * 18 + 56;        String sAddr = "";        StringBuffer sb = new StringBuffer(17);        // 先从第56字节位置,读出Number Of Names(NetBIOS名字的个数,其中每个NetBIOS Names Info部分占18个字节)        // 然后可计算出“Unit ID”字段的位置=56+Number Of Names×18,最后从该位置起连续读取6个字节,就是目的主机的MAC地址。        for (int j = 1; j < 7; j++) {            sAddr = Integer.toHexString(0xFF & brevdata[i + j]);            if (sAddr.length() < 2) {                sb.append(0);            }            sb.append(sAddr.toUpperCase());            if (j < 6) sb.append('-');        }        return sb.toString();    }    public final void close() {        try {            ds.close();        } catch (Exception ex) {            ex.printStackTrace();        }    }        public final String getRemoteMacAddr() throws Exception {        byte[] bqcmd = getQueryCmd();        this.send(bqcmd);        DatagramPacket dp = receive();        String smac ="";        smac = getMacAddr(dp.getData());        this.close();        return smac;    }    public static void  main(String[] args) throws Exception    {        UdpGetClientMacAddr  add = new UdpGetClientMacAddr("123.123.123.8");        System.out.println(add.getRemoteMacAddr());    }}

来源地址:https://blog.csdn.net/weixin_44975322/article/details/129442333

--结束END--

本文标题: java实现通过IP地址获取mac(物理地址)

本文链接: https://www.lsjlt.com/news/389190.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • java实现通过IP地址获取mac(物理地址)
    java实现通过IP地址获取mac(物理地址),只能获取到局域网的mac地址,具体代码如下: package com.qcmsa.util;import org.apache.commons.log...
    99+
    2023-09-01
    java tcp/ip macos
  • Java-通过IP获取真实地址
    文章目录 前言功能实现测试 前言 最近写了一个日志系统,需要通过访问的 IP 地址来获取真实的地址,并且存到数据库中,我也是在网上看了一些文章,遂即整理了一下供大家参考。 功能实现 这个是获取正确 IP 地址的方法,可以直...
    99+
    2023-08-16
    java tcp/ip 网络
  • 用python获取MAC地址和IP地址
    # ifconfig eth0 eth0      Link encap:Ethernet  HWaddr 50:E5:49:3A:EA:90             inet addr:172.28.10.71  Bcast:172.28...
    99+
    2023-01-31
    地址 python MAC
  • Android获取mac地址、OA地址和外网IP地址
    获取Mac地址: public static String GetMAC(Context context) { String Mac = ""; if (Build.VERSION.SDK_INT >= Build.VERSIO...
    99+
    2023-09-06
    android java
  • JAVA获取本地MAC地址
     MAC地址也就是物理地址 所以cmd电脑查看   一、自定义方法获取本地mac地址      private static String getLocalMac(InetAddress inetAddress) {        try...
    99+
    2023-09-03
    java jvm servlet 1024程序员节
  • 获取对方IP地址和获取目标MAC地址的方法
    获取对方IP地址的方法: 1,直接知道对方的IP地址 2,通过域名获取对方的IP地址 (本质上还是直接通过IP进行访问,因为通过域名访问时,需要在DNS服务器中查找域名对应的IP地址,知道对方IP地址...
    99+
    2023-09-04
    网络
  • Python MAC地址 获取,过滤,转
    【输出MAC 地址】[root@pc0003 glpi_switch_ocs]# cat huawei  #!/usr/bin/expect -f set ip 192.168.AC.IP set password AC.PASSWORD ...
    99+
    2023-01-31
    地址 Python MAC
  • c# 获取mac地址
    工作笔记20230328. 在C#中,可以使用NetworkInterface类来获取本地计算机的MAC地址。 using System.Net.NetworkInformation;public string GetMACAddress(...
    99+
    2023-08-17
    c#
  • python获取本机IP、mac地址、计
    在python中获取ip地址和在php中有很大不同,在php中往往比较简单。那再python中怎么做呢?我们先来看一下python 获得本机MAC地址:import... 在python中获取ip地址和在php中有很大不同,在php...
    99+
    2023-01-31
    本机 地址 python
  • 怎么用Python获取计算机名/ip地址/mac地址
    这篇文章主要介绍“怎么用Python获取计算机名/ip地址/mac地址”,在日常操作中,相信很多人在怎么用Python获取计算机名/ip地址/mac地址问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用Py...
    99+
    2023-06-08
  • 如何用Python获取计算机名,ip地址,mac地址
    目录获取计算机名获取ip地址获取mac地址获取计算机名 # 获取计算机名,常用的方法有三种,但最常用的是第一种 import os import socket # metho...
    99+
    2024-04-02
  • android 获取IP地址
    https://blog.csdn.net/Alexlee1986/article/details/96120439 android获取ip地址方法 1、wifi下获取本地局域网IP地址 2、移动网络获取网络IP地址 3、获...
    99+
    2023-08-18
    android tcp/ip java
  • java中如何获取MAC地址
    这篇文章主要介绍了java中如何获取MAC地址,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。什么是Mac地址?Mac地址就是在媒体接入层上使用的地址,通俗点说就是网卡的物理地...
    99+
    2023-06-17
  • 利用java如何根据IP获取mac地址
    利用java如何根据IP获取mac地址?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。具体内容如下import java.net.InetAddress;import jav...
    99+
    2023-05-31
    java ip mac
  • jQuery如何通过IP地址获得地理位置
    小编给大家分享一下jQuery如何通过IP地址获得地理位置,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!通过IP地址获得地理位置...
    99+
    2024-04-02
  • 使用Python怎么获取计算机名,ip地址,mac地址
    使用Python怎么获取计算机名,ip地址,mac地址?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。获取计算机名# 获取计算机名,常用的方法有三种,但最常用的是第一种...
    99+
    2023-06-15
  • 前端获取mac地址
    1.通过getMac库获取mac地址 通过getMac库来获取:getmac - npmGet the MAC address of the current machine you are on.. Latest version: 5.20...
    99+
    2023-10-01
    macos
  • JAVA根据ip地址获取归属地
    IP获取归属地 1.通过地址库获取         如果使用API接口获取,可能会出现服务挂了,或者服务地址不提供服务了等问题。而采用本地地址库就没有这些问题。 本文采用离线IP地址定位库 Ip2region,Ip2region是一个离线I...
    99+
    2023-10-05
    java spring boot 后端
  • 客户端的IP地址与MAC地址怎么利用Java进行获取
    这篇文章将为大家详细讲解有关客户端的IP地址与MAC地址怎么利用Java进行获取,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1.获取客户端IP地址public String getIp(H...
    99+
    2023-05-31
    java ip地址 mac地址
  • 怎么利用Node获取物理网卡mac地址
    本篇内容介绍了“怎么利用Node获取物理网卡mac地址”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在基于...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作