国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Android 查詢局域網(wǎng)內(nèi)所有ip和mac地址

這篇具有很好參考價值的文章主要介紹了Android 查詢局域網(wǎng)內(nèi)所有ip和mac地址。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1:通過java運行cmd命令,來通過arp命令獲取同一網(wǎng)絡下設備信息,對于支持linux 和windows的設備有效,像一些非智能設備,就無力回天了

2:使用android手機通過向子網(wǎng)內(nèi)所有設備先發(fā)送一遍udp包,實現(xiàn)與在線的設備都進行通信一遍,這樣對應的路由信息就自動存儲在本地手機中,然后在通過讀取android 本機的arp緩存表,來獲取設備信息

好,下面詳細進行第二種方式的描述:
Step1:首先,獲取本機所處的子網(wǎng)段,方法詳細代碼如下:

    /**
     * 獲取ip地址
     *
     * @return
     */
    private static String getHostIP() {
        String hostIp = null;
        try {
            //這里以eth0為例
            hostIp = getIpAddress("eth0");
        } catch (SocketException e) {
            e.printStackTrace();
        }
        return hostIp;
    }
    /**
     * Get Ip address 自動獲取IP地址
     * 可以傳入eth1,eth0,wlan0,等
     *
     * @throws SocketException
     */
    public static String getIpAddress(String ipType) throws SocketException {
        String hostIp = null;
        try {
            Enumeration nis = NetworkInterface.getNetworkInterfaces();
            InetAddress ia = null;
            while (nis.hasMoreElements()) {
                NetworkInterface ni = (NetworkInterface) nis.nextElement();

                if (ni.getName().equals(ipType)) {


                    Enumeration<InetAddress> ias = ni.getInetAddresses();
                    while (ias.hasMoreElements()) {

                        ia = ias.nextElement();
                        if (ia instanceof Inet6Address) {
                            continue;// skip ipv6
                        }
                        String ip = ia.getHostAddress();

                        // 過濾掉127段的ip地址
                        if (!"127.0.0.1".equals(ip)) {
                            hostIp = ia.getHostAddress();
                            break;
                        }
                    }
                }
            }
        } catch (SocketException e) {
            e.printStackTrace();
        }
        Log.d(ipType, "get the IpAddress--> " + hostIp + "");
        return hostIp;
    }

Step2:new出一個線程,向網(wǎng)段內(nèi)所有在線設備發(fā)送消息。

/**
     * 創(chuàng)建一個線程向本地所有ip發(fā)送一個數(shù)據(jù)
     */
    public static void sendDataToLocal() {
        //局域網(wǎng)內(nèi)存在的ip集合
        final List<String> ipList = new ArrayList<>();
        final Map<String, String> map = new HashMap<>();
        //獲取本機所在的局域網(wǎng)地址
        String hostIP = getHostIP();
        int lastIndexOf = hostIP.lastIndexOf(".");
        final String substring = hostIP.substring(0, lastIndexOf + 1);
        new Thread(new Runnable() {
            @Override
            public void run() {
                DatagramPacket dp = new DatagramPacket(new byte[0], 0, 0);
                DatagramSocket socket;
                try {
                    socket = new DatagramSocket();
                    int position = 2;
                    while (position < 255) {
                        Log.e("Scanner ", "run: udp-" + substring + position);
                        dp.setAddress(InetAddress.getByName(substring + String.valueOf(position)));
                        socket.send(dp);
                        position++;
                        if (position == 125) {
                            //分兩段掉包,一次性發(fā)的話,達到236左右,會耗時3秒左右再往下發(fā)
                            socket.close();
                            socket = new DatagramSocket();
                        }
                    }
                    socket.close();
                } catch (SocketException e) {
                    e.printStackTrace();
                } catch (UnknownHostException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }

執(zhí)行完后會自動寫入到/proc/net/arp
目錄下,如下:
android 獲取局域網(wǎng)ip,安卓,java,android,tcp/ip,java
Step3:延時3秒后,讀取本機proc/net/arp目錄下的內(nèi)容,得到結(jié)果:

/**
     * 讀取/proc/net/arp并且解析出來ip,mac,flag
     * flag 為0x00說明目前不在局域網(wǎng)內(nèi),曾經(jīng)在過.0x02代表在局域網(wǎng)內(nèi)
     */
    public static void readArp() {
        try {
            BufferedReader br = new BufferedReader(new FileReader("/proc/net/arp"));
            String line = "";
            String ip = "";
            //flag 為0x00說明目前不在局域網(wǎng)內(nèi),曾經(jīng)在過.0x02代表在局域網(wǎng)內(nèi)
            String flag = "";
            String mac = "";
            if (br.readLine() == null) {
                Log.e("scanner", "readArp: null");
            }
            while ((line = br.readLine()) != null) {
                line = line.trim();
                if (line.length() < 63)
                    continue;
                if (line.toUpperCase(Locale.US).contains("IP"))
                    continue;
                ip = line.substring(0, 17).trim();
                flag = line.substring(29, 32).trim();
                mac = line.substring(41, 63).trim();
                if (mac.contains("00:00:00:00:00:00"))
                    continue;
                Log.e("scanner", "readArp: mac= " + mac + " ; ip= " + ip + " ;flag= " + flag);
            }
            br.close();
        } catch (Exception ignored) {
        }
    }

打印日志如下
android 獲取局域網(wǎng)ip,安卓,java,android,tcp/ip,java
最后附上完整代碼文章來源地址http://www.zghlxwxcb.cn/news/detail-525985.html

public class DiscoverNetIpUtil{
    /**
     * 獲取ip地址
     *
     * @return
     */
    private static String getHostIP() {
        String hostIp = null;
        try {
            //這里以eth0為例
            hostIp = getIpAddress("eth0");
        } catch (SocketException e) {
            e.printStackTrace();
        }
        return hostIp;
    }

    /**
     * Get Ip address 自動獲取IP地址
     * 可以傳入eth1,eth0,wlan0,等
     *
     * @throws SocketException
     */
    public static String getIpAddress(String ipType) throws SocketException {
        String hostIp = null;
        try {
            Enumeration nis = NetworkInterface.getNetworkInterfaces();
            InetAddress ia = null;
            while (nis.hasMoreElements()) {
                NetworkInterface ni = (NetworkInterface) nis.nextElement();

                if (ni.getName().equals(ipType)) {


                    Enumeration<InetAddress> ias = ni.getInetAddresses();
                    while (ias.hasMoreElements()) {

                        ia = ias.nextElement();
                        if (ia instanceof Inet6Address) {
                            continue;// skip ipv6
                        }
                        String ip = ia.getHostAddress();

                        // 過濾掉127段的ip地址
                        if (!"127.0.0.1".equals(ip)) {
                            hostIp = ia.getHostAddress();
                            break;
                        }
                    }
                }
            }
        } catch (SocketException e) {
            e.printStackTrace();
        }
        Log.d(ipType, "get the IpAddress--> " + hostIp + "");
        return hostIp;
    }

    /**
     * 創(chuàng)建一個線程向本地所有ip發(fā)送一個數(shù)據(jù)
     */
    public static void sendDataToLocal() {
        //局域網(wǎng)內(nèi)存在的ip集合
        final List<String> ipList = new ArrayList<>();
        final Map<String, String> map = new HashMap<>();
        //獲取本機所在的局域網(wǎng)地址
        String hostIP = getHostIP();
        int lastIndexOf = hostIP.lastIndexOf(".");
        final String substring = hostIP.substring(0, lastIndexOf + 1);
        new Thread(new Runnable() {
            @Override
            public void run() {
                DatagramPacket dp = new DatagramPacket(new byte[0], 0, 0);
                DatagramSocket socket;
                try {
                    socket = new DatagramSocket();
                    int position = 2;
                    while (position < 255) {
                        Log.e("Scanner ", "run: udp-" + substring + position);
                        dp.setAddress(InetAddress.getByName(substring + String.valueOf(position)));
                        socket.send(dp);
                        position++;
                        if (position == 125) {
                            //分兩段掉包,一次性發(fā)的話,達到236左右,會耗時3秒左右再往下發(fā)
                            socket.close();
                            socket = new DatagramSocket();
                        }
                    }
                    socket.close();
                } catch (SocketException e) {
                    e.printStackTrace();
                } catch (UnknownHostException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }

    /**
     * 讀取/proc/net/arp并且解析出來ip,mac,flag
     * flag 為0x00說明目前不在局域網(wǎng)內(nèi),曾經(jīng)在過.0x02代表在局域網(wǎng)內(nèi)
     */
    public static void readArp() {
        try {
            BufferedReader br = new BufferedReader(new FileReader("/proc/net/arp"));
            String line = "";
            String ip = "";
            //flag 為0x00說明目前不在局域網(wǎng)內(nèi),曾經(jīng)在過.0x02代表在局域網(wǎng)內(nèi)
            String flag = "";
            String mac = "";
            if (br.readLine() == null) {
                Log.e("scanner", "readArp: null");
            }
            while ((line = br.readLine()) != null) {
                line = line.trim();
                if (line.length() < 63)
                    continue;
                if (line.toUpperCase(Locale.US).contains("IP"))
                    continue;
                ip = line.substring(0, 17).trim();
                flag = line.substring(29, 32).trim();
                mac = line.substring(41, 63).trim();
                if (mac.contains("00:00:00:00:00:00"))
                    continue;
                Log.e("scanner", "readArp: mac= " + mac + " ; ip= " + ip + " ;flag= " + flag);
            }
            br.close();
        } catch (Exception ignored) {
        }
    }
}

到了這里,關(guān)于Android 查詢局域網(wǎng)內(nèi)所有ip和mac地址的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關(guān)文章

  • 查找局域網(wǎng)樹莓派raspberry的mac地址和ip

    查找局域網(wǎng)樹莓派raspberry的mac地址和ip

    依賴python庫: 運行代碼: 以上代碼的運行有個工具的依賴 Npcap來源github Npcap來自官網(wǎng) Bonjour來自github(這個通常Windows會自帶,如果沒有就下載安裝一下) 通常,上面這個代碼可能無法正常顯示raspberry的主機名,那就要結(jié)合ping -4 raspberrypi.local指令了,代碼如下: 看看運行結(jié)

    2024年01月20日
    瀏覽(25)
  • 幾種查詢局域網(wǎng)內(nèi)在線弱電設備IP地址的方法,總有一款你會用的到

    幾種查詢局域網(wǎng)內(nèi)在線弱電設備IP地址的方法,總有一款你會用的到

    方法一:通過電腦cmd命令查詢局域網(wǎng)內(nèi)設備IP 在電腦開始菜單[運行],輸入cmd回車,在彈出的命令提示窗口輸入ipconfig/all回車,能夠查看本機的IP、網(wǎng)關(guān)、mac地址信息。 然后在命令提示窗口輸入arp -a,進行回車,等待返回結(jié)果。 從返回結(jié)果可以查詢看本地局域網(wǎng)中的所有與本

    2023年04月09日
    瀏覽(26)
  • 查看局域網(wǎng)內(nèi)所有IP

    要如何查看局域網(wǎng)內(nèi)正在使用的電腦的IP一共分以下幾個步驟: 第一步:點擊電腦左下角的“開始”,然后再點擊“運行…”。 第二步:在運行窗口里填入“cmd”,然后點擊確定。 第三步:在cmd命令窗口輸入“ipconfig/ALL”命令,點擊鍵盤上的回車鍵。 第四步:這時會在cmd命令

    2024年02月10日
    瀏覽(22)
  • 查局域網(wǎng)所有占用IP

    查局域網(wǎng)所有占用IP

    按:win+r 出現(xiàn)下面界面,在文本框中輸入 cmd 按確定即可出現(xiàn)cmd命令界面 在cmd命令窗口輸入你想要ping的網(wǎng)段,下面192.168.20.%i即為你想要ping的網(wǎng)段,%i代表0-255 上面命令執(zhí)行完后繼續(xù)輸入 arp -a,即統(tǒng)計所有ping通的IP

    2024年02月11日
    瀏覽(26)
  • 局域網(wǎng)ip地址不夠用-增加內(nèi)網(wǎng)IP地址

    局域網(wǎng)ip地址不夠用-增加內(nèi)網(wǎng)IP地址

    正常情況下局域網(wǎng)的ip地址只有254個,也就是192.168.1.1-192.168.1.254,隨著現(xiàn)在聯(lián)網(wǎng)的設備越來越多,比如監(jiān)控,智能設備等都需要ip,稍微有點規(guī)模的公司254個ip可能就不夠用了。哪怎么解決呢? 1、通過改子網(wǎng)掩碼來增加內(nèi)網(wǎng)ip ? 子網(wǎng)掩碼為255.255.255.0時,路由器下面的內(nèi)網(wǎng)ip最

    2024年02月09日
    瀏覽(23)
  • Mac上手動配置局域網(wǎng)IP

    Mac上手動配置局域網(wǎng)IP

    拿起心愛的mac筆記本,去項目現(xiàn)場處理問題,項目現(xiàn)場使用的局域網(wǎng),手動配置參考一下,實操有效哦!話不多說,上圖… 步驟1:系統(tǒng)偏好設置 步驟2:選擇網(wǎng)絡 步驟3:選擇右下角的添加服務 步驟4:配置IP地址,子網(wǎng)掩碼和路由器(項目現(xiàn)場提供) 步驟5:配置DNS(項目現(xiàn)

    2024年02月13日
    瀏覽(22)
  • windows下查看同局域網(wǎng)其它主機MAC地址命令

    事情是這樣的,今天去面試的時候筆試有一道題問到:Windows下使用什么命令來獲知同局域網(wǎng)內(nèi)其他主機的MAC地址。一開始看到感覺很熟悉,但是卻答不上來。原來建站這么就,很多使用都要使用ping命令來測試網(wǎng)站的可連接性和速度等等。 但是這樣的ping命令并不可以看到一臺

    2024年02月05日
    瀏覽(24)
  • 判斷兩個 IP 地址是否在同一個局域網(wǎng)中

    如何判斷兩個 IP 地址是否在同一個局域網(wǎng)中, 核心知識點是出于一個網(wǎng)絡號, 主要是通過本身ip 與 所處的子網(wǎng)掩碼進行 計算處理是否處于同一個局域網(wǎng)中(在 TCP/IP協(xié)議規(guī)則里面,IP地址與子網(wǎng)掩碼做與運算)。

    2024年02月13日
    瀏覽(28)
  • 如何正確修改IP地址為手動或自動獲???(只針對局域網(wǎng)ip 靜態(tài)ip)

    ? 本文主要和廣大電腦用戶分享 如何正確修改IP地址為手動或自動獲取? 有時候電腦連接不上網(wǎng)絡,主要原因是需要修改IP地址,這些針對IP地址的修改來做個詳細的介紹。(本文所指修改ip地址的方法,只針對局域網(wǎng)ip? 靜態(tài)ip),動態(tài)ip是DHCP自動分配的,需要到路由器設置

    2024年02月05日
    瀏覽(24)
  • 如何能在局域網(wǎng)中隱藏電腦及IP地址(防止被攻擊)

    局域網(wǎng)在各大單位中最為常見,所有開機的電腦都會不約而同的出現(xiàn)在單位的局域網(wǎng)上,而且大家都有固定的IP地址,而固定的IP地址很容易被攻擊,因此,有沒有什么辦法可以在局域內(nèi)隱藏自己的電腦及IP地址呢?答案是肯定的,可以。 隱藏自己的計算機 在windowsXP中右鍵點擊

    2024年02月06日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包