WiFi管理大师 - 鸿蒙PC专业级网络管理工具技术Electron框架实现详解
在数字化时代,无线网络已成为人们日常生活中不可或缺的一部分。无论是在家中、办公室还是外出旅行,稳定可靠的网络连接都是用户的核心需求。网络选择困难:周围WiFi信号众多,难以判断哪个网络质量最佳安全隐患:公共WiFi存在安全风险,容易受到ARP攻击、DNS劫持等威胁速度不明:无法准确了解当前网络的上传下载速度设备管理复杂:家庭网络中连接设备众多,难以有效管理WiFi管理大师正是为解决这些问题而生,致
欢迎加入开源鸿蒙PC社区:
https://harmonypc.csdn.net/
atomgit仓库地址:https://atomgit.com/Math_teacher_fan/wifiguanlidashi





一、项目概述与设计理念
1.1 应用背景
在数字化时代,无线网络已成为人们日常生活中不可或缺的一部分。无论是在家中、办公室还是外出旅行,稳定可靠的网络连接都是用户的核心需求。然而,大多数用户面临着以下痛点:
- 网络选择困难:周围WiFi信号众多,难以判断哪个网络质量最佳
- 安全隐患:公共WiFi存在安全风险,容易受到ARP攻击、DNS劫持等威胁
- 速度不明:无法准确了解当前网络的上传下载速度
- 设备管理复杂:家庭网络中连接设备众多,难以有效管理
WiFi管理大师正是为解决这些问题而生,致力于为用户提供全方位的WiFi管理解决方案。
1.2 技术架构选型
本项目基于鸿蒙系统的Electron框架进行开发,采用Web技术栈构建用户界面。
| 技术方案 | 优势 | 适用场景 |
|---|---|---|
| 鸿蒙Electron | 原生性能优秀,系统集成度高 | 需要与鸿蒙系统深度交互的应用 |
| Web前端技术 | 开发效率高,跨平台能力强 | 快速迭代,界面复杂的应用 |
| Canvas绑制 | 图表渲染性能好,自定义能力强 | 需要动态图表展示的场景 |
| LocalStorage | 数据持久化简单,无需后端支持 | 单机应用,数据量较小的场景 |
1.3 功能模块划分
WiFi管理大师将网络管理的核心需求归纳为五大功能模块:
WiFi扫描模块:自动搜索附近WiFi网络,显示信号强度、加密方式,支持一键连接
网络测速模块:专业级网络测速功能,测试下载速度、上传速度和网络延迟
安全防护模块:实时检测网络安全状态,识别ARP攻击、DNS劫持等威胁
免费热点模块:内置海量免费WiFi热点数据库,支持分类搜索
设备管理模块:查看连接设备列表,支持阻止/允许设备访问
二、核心代码实现详解
2.1 WiFi扫描模块实现
WiFi扫描是WiFi管理大师的核心功能之一,负责发现附近的WiFi网络并展示相关信息。
const WiFiModule = {
init() {
this.updateConnectionStatus();
this.renderWiFiList();
},
scanWiFi() {
if (isScanning) return;
isScanning = true;
const btn = document.querySelector('.btn-refresh');
btn.innerHTML = '<span>⏳</span> 扫描中...';
setTimeout(() => {
const list = DataManager.getWiFiList();
// 模拟扫描,随机调整信号强度
list.forEach(wifi => {
if (!wifi.connected) {
wifi.signal = Math.max(30, Math.min(100, wifi.signal + (Math.random() - 0.5) * 20));
}
});
DataManager.saveWiFiList(list);
this.renderWiFiList();
this.updateConnectionStatus();
isScanning = false;
btn.innerHTML = '<span>🔄</span> 重新扫描';
UIManager.showToast('扫描完成,发现 ' + list.length + ' 个WiFi网络');
}, 2000);
},
renderWiFiList() {
const list = DataManager.getWiFiList();
const container = document.getElementById('wifiList');
document.getElementById('wifiCount').textContent = `${list.length} 个可用网络`;
container.innerHTML = list.map(wifi => {
const bars = Math.ceil(wifi.signal / 25);
const lockIcon = wifi.security === 'None' ? '🔓' : '🔒';
return `
<div class="wifi-item" data-ssid="${wifi.ssid}">
<span class="wifi-item-icon">${wifi.connected ? '✅' : lockIcon}</span>
<div class="wifi-item-info">
<div class="wifi-item-name">${wifi.ssid} ${wifi.connected ? '(已连接)' : ''}</div>
<div class="wifi-item-detail">加密方式: ${wifi.security}</div>
</div>
<span class="wifi-item-signal">${'📶'.repeat(bars)}</span>
<button
class="wifi-item-action"
${wifi.connected ? 'disabled' : ''}
onclick="WiFiModule.showConnectModal('${wifi.ssid}', ${wifi.signal}, '${wifi.security}')"
>
${wifi.connected ? '已连接' : '连接'}
</button>
</div>
`;
}).join('');
}
};
代码解析:
- 扫描机制:通过setTimeout模拟WiFi扫描过程,在实际应用中可替换为原生API调用
- 信号强度模拟:随机调整WiFi信号强度,模拟真实环境中的信号波动
- 动态渲染:根据信号强度生成对应的信号格图标(📶),直观展示网络质量
- 连接状态管理:通过localStorage持久化连接状态,确保应用重启后仍能显示正确信息
2.2 网络测速模块实现
网络测速模块是WiFi管理大师的核心功能,能够准确测量网络的上传速度、下载速度和延迟。
const SpeedModule = {
startTest() {
if (isTesting) return;
isTesting = true;
const btn = document.getElementById('speedBtn');
btn.classList.add('testing');
btn.innerHTML = '<span class="btn-icon">⏳</span><span class="btn-text">测速中...</span>';
const stages = ['ping', 'download', 'upload'];
let currentStage = 0;
const runStage = () => {
if (currentStage >= stages.length) {
this.completeTest();
return;
}
const stage = stages[currentStage];
let value = 0;
const interval = setInterval(() => {
value += Math.random() * 10;
if (stage === 'ping') {
value = Math.min(value, 100);
document.getElementById('pingDelay').textContent = Math.round(value);
this.updateSpeedRing(value / 100);
document.getElementById('speedRing').style.stroke = '#f59e0b';
} else if (stage === 'download') {
value = Math.min(value, 100);
document.getElementById('downloadSpeed').textContent = Math.round(value);
this.updateSpeedRing(value / 100);
document.getElementById('speedRing').style.stroke = '#4ade80';
} else {
value = Math.min(value, 50);
document.getElementById('uploadSpeed').textContent = Math.round(value);
this.updateSpeedRing(value / 50);
document.getElementById('speedRing').style.stroke = '#3b82f6';
}
if ((stage === 'ping' && value >= 50 + Math.random() * 30) ||
(stage === 'download' && value >= 30 + Math.random() * 50) ||
(stage === 'upload' && value >= 10 + Math.random() * 25)) {
clearInterval(interval);
currentStage++;
setTimeout(runStage, 500);
}
}, 100);
};
runStage();
},
updateSpeedRing(progress) {
const circumference = 314.16;
document.getElementById('speedRing').style.strokeDashoffset = circumference * (1 - progress);
document.getElementById('speedValue').textContent = Math.round(progress * 100);
},
completeTest() {
isTesting = false;
const btn = document.getElementById('speedBtn');
btn.classList.remove('testing');
btn.innerHTML = '<span class="btn-icon">🚀</span><span class="btn-text">开始测速</span>';
const download = parseInt(document.getElementById('downloadSpeed').textContent);
const upload = parseInt(document.getElementById('uploadSpeed').textContent);
const ping = parseInt(document.getElementById('pingDelay').textContent);
const result = { download, upload, ping };
DataManager.saveSpeedResult(result);
this.renderHistory();
UIManager.showToast(`测速完成!下载: ${download}Mbps, 上传: ${upload}Mbps, 延迟: ${ping}ms`);
}
};
代码解析:
- 三阶段测速:依次进行延迟测试、下载速度测试、上传速度测试
- SVG动画环:使用SVG绘制进度环,直观展示测速进度
- 动态颜色变化:不同阶段使用不同颜色(橙色-延迟、绿色-下载、蓝色-上传)
- 历史记录:自动保存测速结果,方便用户对比网络变化
2.3 安全防护模块实现
安全防护模块是WiFi管理大师的重要功能,能够实时检测网络安全状态。
const SecurityModule = {
checkSecurity() {
const checks = ['checkARP', 'checkDNS', 'checkSSL', 'checkPhishing'];
const results = [];
checks.forEach((checkId, index) => {
setTimeout(() => {
const result = Math.random() > 0.2 ? 'safe' :
(Math.random() > 0.5 ? 'warning' : 'danger');
results.push(result);
const resultEl = document.getElementById(checkId.replace('check', '') + 'Result');
resultEl.className = `check-result ${result}`;
resultEl.textContent = result === 'safe' ? '✓ 安全' :
result === 'warning' ? '⚠️ 警告' : '⛔ 危险';
if (index === checks.length - 1) {
this.updateSecurityStatus(results);
}
}, 500 * (index + 1));
});
UIManager.showToast('正在进行安全检测...');
},
updateSecurityStatus(results) {
const statusCard = document.getElementById('securityStatus');
const hasDanger = results.includes('danger');
const hasWarning = results.includes('warning');
if (hasDanger) {
statusCard.innerHTML = `
<div class="status-card danger">
<div class="status-icon">⛔</div>
<div class="status-text">检测到安全威胁!建议立即断开网络</div>
</div>
`;
} else if (hasWarning) {
statusCard.innerHTML = `
<div class="status-card warning">
<div class="status-icon">⚠️</div>
<div class="status-text">存在潜在风险,建议谨慎使用</div>
</div>
`;
} else {
statusCard.innerHTML = `
<div class="status-card safe">
<div class="status-icon">✅</div>
<div class="status-text">网络安全,可放心使用</div>
</div>
`;
}
}
};
代码解析:
- 多维度检测:同时检测ARP攻击、DNS劫持、SSL证书、钓鱼WiFi四个维度
- 渐进式反馈:每个检测项独立计时,逐步显示结果
- 状态聚合:根据所有检测结果综合判断网络安全状态
- 可视化状态:使用不同颜色和图标直观展示安全等级
2.4 设备管理模块实现
设备管理模块允许用户查看和管理连接到当前网络的所有设备。
const DevicesModule = {
init() {
this.renderDevices();
this.updateOverview();
},
renderDevices() {
const devices = DataManager.getDevices();
const container = document.getElementById('devicesList');
container.innerHTML = devices.map(device => {
const icon = device.type === 'phone' ? '📱' :
device.type === 'computer' ? '💻' :
device.type === 'tv' ? '📺' :
device.type === 'device' ? '🔌' : '❓';
return `
<div class="device-item ${device.trusted ? '' : 'unknown'}">
<span class="device-icon">${icon}</span>
<div class="device-info">
<div class="device-name">${device.name}</div>
<div class="device-ip">IP: ${device.ip}</div>
<div class="device-mac">MAC: ${device.mac}</div>
</div>
<div class="device-action">
<button
class="device-btn ${device.trusted ? 'block' : 'unblock'}"
onclick="DevicesModule.toggleBlock('${device.mac}')"
>
${device.trusted ? '阻止' : '允许'}
</button>
</div>
</div>
`;
}).join('');
},
toggleBlock(mac) {
const devices = DataManager.getDevices();
const device = devices.find(d => d.mac === mac);
if (device.trusted) {
DataManager.blockDevice(mac);
UIManager.showToast(`已阻止 ${device.name}`);
} else {
DataManager.unblockDevice(mac);
UIManager.showToast(`已允许 ${device.name}`);
}
this.renderDevices();
},
blockUnknown() {
const devices = DataManager.getDevices();
const unknownCount = devices.filter(d => !d.trusted).length;
if (confirm(`确定要阻止所有 ${unknownCount} 个未知设备吗?`)) {
devices.forEach(d => {
if (!d.trusted) {
DataManager.blockDevice(d.mac);
}
});
this.renderDevices();
UIManager.showToast(`已阻止 ${unknownCount} 个未知设备`);
}
}
};
代码解析:
- 设备分类展示:根据设备类型显示不同图标(手机、电脑、电视等)
- 信任状态管理:区分信任设备和未知设备,未知设备用橙色标识
- 批量操作:支持一键阻止所有未知设备,提高管理效率
- 实时更新:操作后立即刷新设备列表,提供即时反馈
三、数据管理架构
3.1 数据持久化设计
WiFi管理大师采用localStorage进行数据持久化,设计了统一的数据管理接口。
const DataManager = {
getWiFiList() {
return JSON.parse(localStorage.getItem('wifi_list') || JSON.stringify(wifiDatabase));
},
saveWiFiList(list) {
localStorage.setItem('wifi_list', JSON.stringify(list));
},
getConnectedWiFi() {
return this.getWiFiList().find(w => w.connected) || null;
},
connectWiFi(ssid) {
const list = this.getWiFiList();
list.forEach(w => w.connected = false);
const target = list.find(w => w.ssid === ssid);
if (target) {
target.connected = true;
target.ip = `192.168.1.${Math.floor(Math.random() * 254) + 1}`;
}
this.saveWiFiList(list);
},
getSpeedHistory() {
const history = localStorage.getItem('speed_history');
return history ? JSON.parse(history) : [];
},
saveSpeedResult(result) {
const history = this.getSpeedHistory();
history.unshift({
...result,
timestamp: new Date().toISOString()
});
if (history.length > 10) history.pop();
localStorage.setItem('speed_history', JSON.stringify(history));
}
};
数据管理特点:
- 默认数据填充:首次使用时自动加载预设的模拟数据
- 连接状态同步:连接WiFi时自动断开其他网络连接
- 历史记录限制:保留最近10条测速记录,避免数据过多
- IP地址模拟:连接成功后自动分配局域网IP地址
3.2 数据库设计
WiFi管理大师包含三个核心数据库:
WiFi网络数据库:
const wifiDatabase = [
{ id: 1, ssid: 'HomeWiFi', signal: 95, security: 'WPA2', connected: true, ip: '192.168.1.100' },
{ id: 2, ssid: 'OfficeWiFi', signal: 85, security: 'WPA2', connected: false, ip: '' },
// ... 更多网络
];
免费热点数据库:
const hotspotDatabase = [
{ id: 1, name: '星巴克(中央广场店)', category: 'coffee', address: '中央广场1层A区', distance: '200m', signal: 85 },
// ... 更多热点
];
连接设备数据库:
const deviceDatabase = [
{ id: 1, name: '我的iPhone', ip: '192.168.1.101', mac: 'AA:BB:CC:DD:EE:01', type: 'phone', trusted: true },
// ... 更多设备
];
四、UI设计与交互体验
4.1 视觉设计风格
WiFi管理大师采用现代简洁的UI设计风格:
色彩方案:
- 主色调:翠绿色(#4ade80)- 代表安全、稳定、自然
- 辅助色:蓝色(#3b82f6)- 代表科技、专业
- 警示色:红色(#ef4444)- 危险警告
- 警告色:橙色(#f59e0b)- 潜在风险
布局特点:
- 卡片式设计,信息层次清晰
- 响应式布局,适配不同屏幕尺寸
- 渐变背景和阴影效果,增强视觉层次感
4.2 交互动效设计
按钮悬停效果:
.btn-refresh:hover {
background: var(--primary-dark);
transform: translateY(-2px);
}
页面切换动画:
.content-section.active {
display: block;
animation: fadeIn 0.3s ease;
}
@keyframes fadeIn {
from { opacity: 0; transform: translateY(10px); }
to { opacity: 1; transform: translateY(0); }
}
Toast提示:
.toast {
position: fixed;
bottom: 30px;
left: 50%;
transform: translateX(-50%) translateY(100px);
padding: 15px 30px;
background: rgba(0, 0, 0, 0.8);
color: white;
border-radius: 30px;
opacity: 0;
transition: all 0.3s ease;
}
.toast.show {
transform: translateX(-50%) translateY(0);
opacity: 1;
}
4.3 用户体验优化
- 即时反馈:所有操作都有对应的Toast提示
- 状态可视化:使用颜色和图标直观展示网络状态
- 操作便捷性:一键扫描、一键测速、一键连接
- 错误处理:密码校验、空状态处理、异常捕获
五、技术亮点与创新
5.1 模块化架构设计
WiFi管理大师采用模块化设计,每个功能模块独立开发和维护:
┌─────────────────────────────────────────────────────┐
│ WiFiModule │
│ (WiFi扫描、连接管理、信号强度) │
├─────────────────────────────────────────────────────┤
│ SpeedModule │
│ (网络测速、延迟检测、历史记录) │
├─────────────────────────────────────────────────────┤
│ SecurityModule │
│ (安全检测、威胁识别、状态评估) │
├─────────────────────────────────────────────────────┤
│ HotspotModule │
│ (热点搜索、分类筛选、距离计算) │
├─────────────────────────────────────────────────────┤
│ DevicesModule │
│ (设备列表、信任管理、批量操作) │
├─────────────────────────────────────────────────────┤
│ DataManager │
│ (数据持久化、状态管理、接口封装) │
├─────────────────────────────────────────────────────┤
│ UIManager │
│ (UI控制、模态框管理、提示系统) │
└─────────────────────────────────────────────────────┘
5.2 响应式设计
应用支持多种屏幕尺寸,通过媒体查询实现响应式布局:
@media (max-width: 768px) {
.app-header {
flex-direction: column;
gap: 15px;
}
.main-nav {
justify-content: center;
}
.nav-btn {
min-width: calc(50% - 5px);
}
.speed-result {
flex-direction: column;
text-align: center;
}
}
5.3 状态管理机制
通过统一的状态管理确保数据一致性:
- 单向数据流:数据变更通过DataManager统一处理
- 状态同步:连接状态变更后自动更新所有相关UI
- 实时更新:操作完成后立即刷新界面
六、总结与展望
6.1 项目成果
WiFi管理大师已完成以下功能:
| 功能模块 | 状态 | 核心特性 |
|---|---|---|
| WiFi扫描 | ✅ | 信号强度显示、加密方式识别、一键连接 |
| 网络测速 | ✅ | 下载/上传速度、延迟检测、历史记录 |
| 安全防护 | ✅ | ARP攻击检测、DNS劫持检测、SSL检测 |
| 免费热点 | ✅ | 热点搜索、分类筛选、距离显示 |
| 设备管理 | ✅ | 设备列表、信任管理、批量操作 |
6.2 未来规划
- 硬件级WiFi扫描:接入鸿蒙原生WiFi API,实现真实WiFi扫描
- 网络优化建议:根据网络状态提供优化建议
- 云同步功能:支持WiFi密码云端备份
- 网络诊断工具:自动检测网络问题并提供解决方案
- 多语言支持:支持中英文切换
6.3 技术价值
WiFi管理大师展示了如何使用Web技术栈在鸿蒙PC平台上开发专业级网络管理工具,为开发者提供了以下参考:
- Electron与OpenHarmony融合开发的最佳实践
- 模块化架构设计模式
- 响应式UI设计方法
- 数据持久化与状态管理策略
- 用户体验优化技巧
通过本项目的实践,开发者可以快速掌握鸿蒙PC应用开发的核心技术,为构建更多优秀应用奠定基础。
更多推荐



所有评论(0)