JAVA编写程序获取本机IP与MAC地址

版权申诉
0 下载量 4 浏览量 更新于2024-12-06 收藏 1KB RAR 举报
该文件的主要功能是实现获取本机的IP地址和MAC地址。" 在Java中获取本机IP地址和MAC地址,首先需要了解相关的基础知识。在Java编程中,可以通过标准库中的类和方法来实现这一功能。具体来说,本机的IP地址可以通过java.net包中的NetworkInterface类来获取,而MAC地址则可以通过同一包中的InetAddress类来间接获取。 NetworkInterface类提供了一个用于网络接口的本地或远程通信点的表示形式。它包括方法用于获取网络接口的名称、友好名称以及IP地址列表等信息。为了获取本机的IP地址,一般会遍历本机的所有的网络接口,并判断这些接口的类型和状态是否符合要求(例如,是否为虚拟接口、是否处于激活状态等),然后从中提取IP地址。 至于MAC地址,由于在不同的操作系统中获取方式可能会有所不同,并且出于安全和隐私的考虑,不是所有的Java环境都支持直接通过Java API来获取本机的MAC地址。在某些系统中,可以通过读取网络接口的硬件地址来获取MAC地址,这通常是一个12位的十六进制数。 下面是使用Java代码获取本机IP地址和MAC地址的一个简单示例: ```java import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.util.Enumeration; public class Get_PC_Info { public static void main(String[] args) { try { Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces(); for (NetworkInterface netInterface : Collections.list(networkInterfaces)) { // 获取网络接口的名称 String name = netInterface.getName(); // 获取网络接口的友好名称 String displayName = netInterface.getDisplayName(); // 检查是否为回环接口,不获取回环接口的IP地址 if (netInterface.isLoopback() || !netInterface.isUp()) { continue; } // 遍历该接口的所有IP地址 Enumeration<InetAddress> inetAddresses = netInterface.getInetAddresses(); for (InetAddress inetAddress : Collections.list(inetAddresses)) { // 检查是否为IPv4地址 if (inetAddress.isSiteLocalAddress()) { System.out.println("Interface Name: " + name); System.out.println("Display Name: " + displayName); System.out.println("IP Address: " + inetAddress.getHostAddress()); // 获取MAC地址(仅适用于部分操作系统) byte[] mac = netInterface.getHardwareAddress(); if (mac != null) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < mac.length; i++) { sb.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : "")); } System.out.println("MAC Address: " + sb.toString()); } System.out.println(); } } } } catch (SocketException e) { e.printStackTrace(); } } } ``` 上述代码首先获取本机所有的网络接口,然后遍历每个接口,检查它们是否是活跃的非回环接口,并获取该接口的所有IP地址。对于IPv4的站点本地地址,代码还会尝试获取其MAC地址。需要注意的是,获取MAC地址的方法可能在某些Java环境中不可用,或者在不同平台上的支持程度不同。 综上所述,通过编写Java代码可以较为便捷地获取本机的IP地址和MAC地址,但需要合理使用java.net包中的相关类和方法,并注意不同操作系统和Java环境可能带来的差异性。
2023-05-30 上传

import requests import os from bs4 import BeautifulSoup class book_spider(): def __init__(self,root_url): self.root_url=root_url self.book_list=[] #一级页面中获取的数据(二级页面地址)存放于此列表 self.chapter_list=[] #二级页面中获取的数据(三级页面地址和章节名)存放于此列表 def get_url(url): while True: try: res=requests.get(url) if res.status_code==200: res.encoding =res.apparent_encoding print("页面获取成功") return res.text else: print("页面返回异常",res.status_code) except: print("页面获取错误") def get_book_list(self.url): res = self.get_url(url) html = BeautifulSoup(res,"html.parser") a_list = html.find_all("a",{"class":"name"}) for a in a_list: self.book_list.append(a["href"]) self.book_list = [self.root_url+i for i in self.bbok_list] self.book_list.remove('http://10.1.88.252:7000/庆余年') print(book_list) def get_chapter_list(self,url): res = self.get_url(url) html = BeautifulSoup(res,"html.parser") a_list = html.find_all("a",{"class":"chapter"}) for a in a_list: self.chapter_list.append((a["href"],a.text.replace("\n",""))) def get_content(self.chapter): url = self.root_url + chapter[0] print(url) book_name = chapter[0].split("/")[1] print(book_name) if not os.path.exists(book_name): os.mkdir(book_name) res = self.get_url(url) html = BeautifulSoup(res,"html.parser") content = html.find("div",{"id":"content"}).text print(content) path = os.path.join(book_name,chapter[1]) with open(path,"w",encoding="utf8") as f: f.write(content) def main(): self.get_book_list(self.root_url) for book in self.book_list: self.get_chapter_liat(book) for chapter in chapter_list: self.get_content(chapter) book_s = book_spider("http://10.1.88.252:7000") book_s.main()这是一段爬虫代码,找出里面的错误并改正

143 浏览量