# WOL工具集(使用TRAE生成) **Repository Path**: walkline/wol-toolset ## Basic Information - **Project Name**: WOL工具集(使用TRAE生成) - **Description**: 这是一个网络唤醒(Wake-on-LAN)工具集 - **Primary Language**: C++ - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-14 - **Last Updated**: 2025-09-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: Trae ## README # WOL工具集(网络唤醒工具) 这是一个网络唤醒(Wake-on-LAN)工具集,包含两个主要应用程序: - **wolcmd.exe**:发送网络唤醒数据包来远程唤醒支持WOL功能的计算机 - **wollisten.exe**:监听网络上的WOL唤醒数据包 ## 目录结构 ``` wolcmd/ ├── .gitignore ├── README.md ├── auto_build.ps1 # 自动编译和监控脚本 ├── build_all.bat # 编译脚本 ├── release/ # 编译输出目录 ├── resources/ # 资源文件 │ └── icon.ico ├── run_wolcmd.bat # 快速运行wolcmd的脚本 ├── run_wollisten.bat # 快速运行wollisten的脚本 ├── wolcmd.sln # Visual Studio解决方案文件 ├── wolcmd/ # wolcmd项目源码 │ ├── resource.aps │ ├── resource.h │ ├── resource.rc │ ├── wolcmd.cpp # 核心实现文件 │ ├── wolcmd.rc │ ├── wolcmd.vcxproj │ └── wolcmd.vcxproj.filters └── wollisten/ # wollisten项目源码 ├── resource.aps ├── resource.h ├── resource.rc ├── wollisten.cpp # 核心实现文件 ├── wollisten.vcxproj └── wollisten.vcxproj.filters ``` ## 功能说明 ### wolcmd.exe 用于发送网络唤醒(WOL)数据包,通过向目标计算机发送特定格式的数据包,使其从关机或睡眠状态唤醒。 #### 命令格式 ``` wolcmd MAC地址 [-b 广播地址] [-p 端口] ``` #### 参数说明 - **MAC地址**:必选参数,目标计算机的MAC地址,支持以下格式: - 00:11:22:33:44:55(冒号分隔) - 00-11-22-33-44-55(短横线分隔) - 001122334455(连续字符串) - **-b 广播地址**:可选参数,指定广播地址,默认为255.255.255.255 - **-p 端口**:可选参数,指定端口号,默认为50000 #### 使用示例 ```bash # 使用默认广播地址和端口发送WOL数据包 wolcmd 00:11:22:33:44:55 # 使用指定的广播地址和端口发送WOL数据包 wolcmd 00-11-22-33-44-55 -b 192.168.1.255 -p 7 ``` ### wollisten.exe 用于监听网络上的WOL唤醒数据包,可用于调试或监控网络中的WOL活动。 #### 命令格式 ``` wollisten [端口] ``` #### 参数说明 - **端口**:可选参数,指定监听端口,默认为50000 #### 使用示例 ```bash # 使用默认端口监听WOL数据包 wollisten # 使用指定端口监听WOL数据包 wollisten 7 ``` ## 编译指南 ### 使用build_all.bat编译 `build_all.bat`是一个简单的批处理脚本,用于一次性编译整个项目: ```bash # 在命令提示符中运行 build_all.bat ``` 编译完成后,可执行文件将位于项目根目录下的`Release`文件夹中。 ### 使用auto_build.ps1编译 `auto_build.ps1`是一个PowerShell脚本,提供了更强大的功能: - 自动设置Visual Studio环境变量和MSBuild路径 - 监控源代码文件的变化 - 当文件发生变化时自动重新编译项目 - 显示编译结果和可执行文件大小 使用方法: ```powershell # 在PowerShell中运行 .\auto_build.ps1 ``` > 说明:脚本已优化,能够自动检测并设置必要的环境变量,无需手动运行`vcvars32.bat`或在Visual Studio命令提示符中执行。 ## 快速运行 项目提供了两个快速运行脚本,方便直接启动编译好的程序: ### 运行wolcmd ```bash run_wolcmd.bat [参数] # 例如:run_wolcmd.bat 00:11:22:33:44:55 ``` ### 运行wollisten ```bash run_wollisten.bat [端口] # 例如:run_wollisten.bat 7 ``` ## 技术原理 ### WOL数据包结构 网络唤醒数据包由以下部分组成: 1. 前6个字节为0xFF(魔法包标记) 2. 接下来重复16次目标计算机的MAC地址 3. 总长度为102字节 ### 工作流程 1. **wolcmd**: - 解析命令行参数(MAC地址、可选的广播地址和端口) - 验证并解析MAC地址 - 创建UDP套接字并设置为广播模式 - 构造符合WOL协议的数据包 - 发送广播数据包 - 显示发送结果 2. **wollisten**: - 解析命令行参数(可选的端口号) - 创建UDP套接字并绑定到指定端口 - 循环接收网络数据包 - 检查接收到的数据包是否符合WOL格式(以6个0xFF字节开头) - 显示符合条件的数据包信息(MAC地址、发送方IP和端口等) ## 注意事项 1. 确保目标计算机已启用WOL功能(通常在BIOS/UEFI设置中开启) 2. 部分计算机可能需要在操作系统中进行额外设置以支持WOL 3. 在某些网络环境下,可能需要特定的广播地址才能正常唤醒计算机 4. 使用时请确保网络设备(如路由器、交换机)支持并已启用WOL数据包转发 5. MAC地址必须正确无误,程序会验证MAC地址格式,但不会验证其有效性 ## 系统要求 - Windows操作系统(默认配置支持Windows 10,如需在Windows 7运行需要修改项目配置) - Visual Studio 2017或更高版本(用于编译) - .NET Framework 4.0或更高版本(用于运行PowerShell脚本) - 支持Winsock 2.2的网络环境 ## Windows 7兼容性说明 默认情况下,项目配置为Windows 10目标平台(WindowsTargetPlatformVersion=10.0)和Visual Studio 2022工具集(PlatformToolset=v143),这意味着编译后的程序无法在Windows 7上直接运行。 如需在Windows 7上运行,请在Visual Studio中修改项目属性: 1. 将平台工具集从`v143`更改为兼容Windows 7的版本(如`v141_xp`或`v141`) 2. 将目标平台版本从`10.0`更改为`7.0` 3. 确保使用静态运行时库(MultiThreaded)以减少系统依赖 ## 故障排除 - **无法唤醒计算机**:检查BIOS/UEFI设置是否正确启用了WOL功能,以及网络设备配置 - **编译失败**:确保已正确安装Visual Studio并设置了环境变量 - **中文显示问题**:build_all.bat和auto_build.ps1已配置为使用GB2312代码页确保中文正常显示 - **参数错误**:使用无效MAC地址格式时,程序会提示错误并显示帮助信息 ## 更新日志 - 优化了auto_build.ps1脚本,使其能够自动识别并设置MSBuild路径,无需手动配置环境变量 - 更新了目录结构以反映实际项目文件 - 详细说明了技术实现原理 - 增加了Windows 7兼容性说明 - 优化了中文显示支持 - 添加了自动编译和监控功能 - 简化了使用方式,提供快速运行脚本