日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

获取本机局域网IP地址

發布時間:2023/12/16 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 获取本机局域网IP地址 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

java獲取本機局域網IP地址/掃描同局域網其他設備iP

1.背景

我們的設備上有很多的網絡接口(network interfaces),每個網絡接口就包含一個IP地址,并不是所有的IP地址能被外部或局域網訪問,比如說虛擬機網卡地址。 所以我們寫獲取到的IP地址可能并不是我們想要的那個,或者說會獲取不少地址,而我們想要的就在其中,那我們就必須做一些篩選,把我們要的留下。

2.小知識

這里有點知識,分享給你:

127.xxx.xxx.xxx 屬于”loopback” 地址,就是本機地址,比較常見的有127.0.0.1;
192.168.xxx.xxx 屬于私有地址,屬于本地組織內部訪問,只能在本地局域網可見。同樣10.xxx.xxx.xxx、從172.16.xxx.xxx 到 172.31.xxx.xxx都是私有地址,也是屬于組織內部訪問;

169.254.xxx.xxx 屬于連接本地地址,在單獨網段可用

從224.xxx.xxx.xxx 到 239.xxx.xxx.xxx 屬于組播地址

255.255.255.255 屬于廣播地址
除此之外的地址就是點對點的可用的公開IPv4地址

3.java實現代碼

1.獲取本機局域網IP地址

import java.net.Inet4Address; import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.net.UnknownHostException; import java.util.Enumeration;public class test {public static void main(String[] args) throws SocketException, UnknownHostException {// TODO Auto-generated method stubEnumeration<NetworkInterface> enumeration = NetworkInterface.getNetworkInterfaces();InetAddress ip = null;while(enumeration.hasMoreElements()) {NetworkInterface ni = enumeration.nextElement();//過濾掉虛擬機、未開啟、回環接口if(ni.isVirtual()||!ni.isUp()||ni.isLoopback()) {//System.out.println("虛擬機接口或接口未啟動");continue;//根據接口名稱進一步過濾:WiFi驅動一般名稱中包含“Intel”,有線連接包含"Realtek"}else if(ni.getDisplayName().contains("Intel")||ni.getDisplayName().contains("Realtek")||ni.getDisplayName().contains("Wi")){Enumeration<InetAddress> address = ni.getInetAddresses();while(address.hasMoreElements()) {ip = address.nextElement();if(ip instanceof Inet4Address) {System.out.println(ip.getHostAddress());System.out.println(ni.getDisplayName());}}}}}}

2.掃描同局域網其他設備。

package test; import java.io.IOException; import java.net.InetAddress;public class OpenFileChoose {public static void main(String[] args) throws IOException {String hostIP = "192.168.43.20";//本機局域網IP地址String Segment = getNetworkSegment(hostIP);//得到本機所在局域網網段for(int i = 1;i<255;i++) {String interimIP = Segment+i;InetAddress ip =InetAddress.getByName(interimIP);boolean isOnline = ip.isReachable(1000);//判斷這個ip地址是否在線,其中1000ms指定的是超時時間if(isOnline) {System.out.println("同局域網內有設備:"+ip.getHostName()+"-----"+"IP:"+ip.getHostAddress());}}System.out.println("掃描完畢");}//得到本機所在網段private static String getNetworkSegment(String ip) {int index = ip.lastIndexOf("."); return ip.substring(0, index+1);}}

代碼較少,不拆分開來說了,提醒一下,isReachable(1000)函數執行很耗時間。你也可以考慮試試用ping.

總結

以上是生活随笔為你收集整理的获取本机局域网IP地址的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。