Skip to content

Commit 0b3a01f

Browse files
committed
WOL 1.0
Signed-off-by: Oh Sungsik <148734055+ohsungsik@users.noreply.github.com>
0 parents  commit 0b3a01f

File tree

11 files changed

+1834
-0
lines changed

11 files changed

+1834
-0
lines changed

.editorconfig

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
root = true
2+
3+
[*.{cpp,c}]
4+
indent_size = 4
5+
insert_final_newline = true
6+
charset = utf-8-bom
7+
8+
[*.{ini}]
9+
charset = utf-8

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
.vs
2+
out
3+
!out/bin/config.ini

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2025 Oh Sungsik
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

ReadME.md

Lines changed: 272 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,272 @@
1+
# Wake-on-LAN 콘솔 애플리케이션
2+
3+
## 🌟 개요
4+
5+
**Wake-on-LAN (WOL)**은 네트워크를 통해 원격으로 컴퓨터를 켜는 기술입니다. 이 프로그램은 Windows 명령 프롬프트에서 실행되는 간단한 WOL 도구로, 설정 파일에 지정된 대상 컴퓨터에 "매직 패킷"을 전송하여 원격으로 전원을 켤 수 있습니다.
6+
7+
### 🎯 주요 활용 사례
8+
- 사무실에서 집 컴퓨터 원격 부팅
9+
- 서버실의 장비 원격 관리
10+
11+
---
12+
13+
## ✨ 주요 기능
14+
15+
### 🔧 핵심 기능
16+
- **매직 패킷 전송**: IEEE 802 표준에 따른 102바이트 WOL 패킷을 UDP 브로드캐스트로 전송
17+
- **입력 검증**: MAC 주소, IP 주소, 포트 번호의 형식을 자동으로 검증하여 오류 방지
18+
- **간편한 설정**: `config.ini` 파일 하나로 모든 설정 완료
19+
- **다중 아키텍처 지원**: x64, x86, ARM64 플랫폼용 빌드 제공
20+
21+
### 🛡️ 안전성 특징
22+
- 잘못된 설정값 입력 시 명확한 오류 메시지 제공
23+
- 네트워크 연결 실패 시 상세한 진단 정보 출력
24+
- 설정 파일 누락 시 친화적인 안내 메시지
25+
26+
---
27+
28+
## 📥 다운로드 및 설치
29+
30+
### 즉시 사용 (권장)
31+
바로 사용할 수 있는 실행 파일을 다운로드하세요:
32+
33+
**👉 [최신 버전 다운로드](https://github.com/ohsungsik/Wake-On-Lan/releases/latest)**
34+
35+
### 설치 단계
36+
1. 위 링크에서 본인의 시스템에 맞는 파일 다운로드
37+
- `WOL.x64.Release.exe` (64비트 Windows, 권장)
38+
- `WOL.x86.Release.exe` (32비트 Windows)
39+
- `WOL.ARM64.Release.exe` (ARM64 Windows)
40+
41+
2. 원하는 폴더에 실행 파일 저장
42+
43+
3. 같은 폴더에 `config.ini` 설정 파일 생성 (아래 설정 방법 참조)
44+
45+
---
46+
47+
## ⚙️ 설정 방법
48+
49+
### config.ini 파일 생성
50+
실행 파일과 **반드시 같은 폴더**`config.ini` 파일을 만들고 다음 내용을 입력하세요:
51+
52+
```ini
53+
[Target]
54+
# 깨우려는 컴퓨터의 MAC 주소 (네트워크 어댑터 주소)
55+
MacAddress=00-11-22-AA-BB-CC
56+
57+
# 브로드캐스트 IP 주소 (보통 192.168.x.255 형태)
58+
BroadcastIp=192.168.0.255
59+
60+
# WOL 포트 번호 (기본값: 9)
61+
Port=9
62+
```
63+
64+
### 📝 설정값 찾는 방법
65+
66+
#### MAC 주소 확인 (대상 컴퓨터에서)
67+
```cmd
68+
# Windows 명령 프롬프트에서 실행
69+
ipconfig /all
70+
```
71+
"물리적 주소" 또는 "Physical Address" 항목을 찾아 하이픈(`-`) 형식으로 입력
72+
73+
#### 브로드캐스트 IP 확인
74+
- 일반적인 가정용 네트워크: `192.168.1.255` 또는 `192.168.0.255`
75+
- 모든 네트워크에 전송: `255.255.255.255`
76+
- 본인의 IP가 `192.168.1.100`이면 브로드캐스트는 `192.168.1.255`
77+
78+
#### 포트 설정
79+
- 기본값 `9` 사용 권장
80+
- 필요시 `7` 또는 다른 포트 사용 가능 (1~65535)
81+
82+
### ⚠️ 중요한 주의 사항
83+
- `config.ini` 파일은 **UTF-8 인코딩**으로 저장해야 합니다
84+
- 메모장에서 저장할 때 "인코딩: UTF-8" 선택
85+
- MAC 주소는 반드시 하이픈(`-`) 구분자 사용
86+
87+
---
88+
89+
## 🚀 사용 방법
90+
91+
### 1단계: 명령 프롬프트 열기
92+
- `Windows + R``cmd` 입력 → 엔터
93+
- 또는 시작 메뉴에서 "명령 프롬프트" 검색
94+
95+
### 2단계: 프로그램 실행
96+
```cmd
97+
# 실행 파일이 있는 폴더로 이동
98+
cd C:\다운로드\WOL
99+
100+
# 프로그램 실행
101+
WOL.x64.Release.exe
102+
```
103+
104+
### 3단계: 결과 확인
105+
성공 시 다음과 같은 메시지가 표시됩니다:
106+
```
107+
매직 패킷이 성공적으로 전송되었습니다!
108+
대상 PC가 켜지지 않는다면 다음을 확인하세요:
109+
1. 대상 PC의 BIOS에서 Wake-on-LAN 활성화
110+
2. 네트워크 어댑터의 전원 관리 설정
111+
3. 올바른 MAC 주소 및 브로드캐스트 IP
112+
4. 방화벽/라우터 설정
113+
```
114+
115+
---
116+
117+
## 🔧 대상 컴퓨터 설정
118+
119+
Wake-on-LAN이 작동하려면 대상 컴퓨터에서 다음 설정이 필요합니다:
120+
121+
### BIOS/UEFI 설정
122+
123+
1) 컴퓨터 부팅 시 Delete, F2, F12 등을 눌러 BIOS 진입
124+
2) "Power Management" 또는 "전원 관리" 메뉴 찾기
125+
3) "Wake on LAN" 또는 "네트워크로 깨우기" 기능 활성화
126+
4) 설정 저장 후 종료
127+
128+
### Windows 네트워크 어댑터 설정
129+
130+
#### 1단계: 전원 관리 설정
131+
132+
1) 장치 관리자 열기 (Windows + X → 장치 관리자)
133+
2) 네트워크 어댑터 확장
134+
3) 사용 중인 네트워크 어댑터 우클릭 → 속성
135+
4) 전원 관리 탭 선택
136+
5) 다음 옵션들 체크:
137+
- 컴퓨터가 이 장치를 끌 수 있음
138+
- 이 장치가 컴퓨터의 대기 모드를 해제할 수 있음
139+
- 매직 패킷만 컴퓨터의 대기 모드를 해제할 수 있음
140+
141+
#### 2단계: 고급(Advanced) 속성 설정
142+
143+
1) 같은 네트워크 어댑터 속성 창에서 고급 탭 선택
144+
2) 다음 항목들을 찾아서 설정 (제조사별로 이름이 다를 수 있음):
145+
146+
📌 필수 설정 항목들:
147+
- Wake on Magic Packet: 사용 또는 Enabled
148+
- Wake on Pattern Match: 사용 또는 Enabled
149+
- WOL & Shutdown Link Speed: 10Mbps First 또는 Not Speed Down
150+
- Energy Efficient Ethernet: 사용 안 함 또는 Disabled
151+
- Green Ethernet: 사용 안 함 또는 Disabled
152+
- 절전 모드에서 Magic Packet으로 깨우기: 사용
153+
154+
⚠️ 브랜드별 설정 이름 예시:
155+
- Realtek: "Wake on Magic Packet", "WOL & Shutdown Link Speed"
156+
- Intel: "Wake on Magic Packet", "Energy Efficient Ethernet"
157+
- Broadcom: "Wake-Up Capabilities", "Energy Efficient Ethernet"
158+
159+
3) 설정 변경 후 확인 클릭
160+
4) 컴퓨터 재부팅 (설정 적용을 위해)
161+
162+
## 🔍 설정 확인 방법
163+
PowerCfg 명령어로 WOL 설정이 올바르게 되었는지 확인하는 방법입니다:
164+
165+
### 1단계: 관리자 권한 명령 프롬프트 열기
166+
167+
Windows + X 키 → "Windows PowerShell(관리자)" 또는 "명령 프롬프트(관리자)" 선택
168+
또는 시작 메뉴에서 "cmd" 검색 → 우클릭 → "관리자 권한으로 실행"
169+
170+
### 2단계: 명령어 실행
171+
```cmd
172+
powercfg /devicequery wake_armed
173+
```
174+
175+
### 3단계: 결과 해석
176+
177+
✅ 정상적인 경우 (WOL 설정 완료):
178+
```
179+
Intel(R) Ethernet Connection (2) I219-V
180+
Realtek PCIe GbE Family Controller
181+
HID-compliant mouse
182+
USB Root Hub (3.0)
183+
```
184+
네트워크 어댑터 이름이 목록에 표시됩니다.
185+
186+
❌ 문제가 있는 경우:
187+
```
188+
HID-compliant mouse
189+
USB Root Hub (3.0)
190+
```
191+
네트워크 어댑터가 목록에 없으면 WOL 설정이 제대로 되지 않은 것입니다.
192+
193+
---
194+
195+
## 🔨 직접 빌드하기
196+
197+
개발자이거나 소스코드를 수정하고 싶다면 직접 빌드 할 수 있습니다.
198+
199+
### 빌드 환경 요구사항
200+
- **운영체제**: Windows 10 이상
201+
- **개발도구**: Visual Studio 2019 이상 또는 Build Tools for Visual Studio
202+
- **C++ 컴파일러**: MSVC (Microsoft Visual C++)
203+
204+
### 빌드 방법
205+
206+
#### 방법 1: 자동 빌드 스크립트
207+
```cmd
208+
# 프로젝트 폴더에서 실행
209+
build.bat
210+
```
211+
빌드 완료 후 `out\bin\` 폴더에서 실행 파일 확인
212+
213+
#### 방법 2: Visual Studio 사용
214+
1. `WOL.sln` 파일을 Visual Studio로 열기
215+
2. 상단에서 플랫폼 선택 (x64/x86/ARM64)
216+
3. 구성 선택 (Debug/Release)
217+
4. **빌드****솔루션 빌드** (F7 또는 Ctrl+Shift+B)
218+
219+
---
220+
221+
## 📁 프로젝트 구조
222+
223+
```
224+
WOL/ # 프로젝트 루트 폴더
225+
├── README.md # 이 문서
226+
├── LICENSE # MIT 라이선스
227+
├── .gitignore # Git 버전 관리 제외 파일 목록
228+
├── build.bat # 자동 빌드 스크립트
229+
├── main.cpp # C++ 소스 코드
230+
├── WOL.sln # Visual Studio 솔루션 파일
231+
├── WOL.vcxproj # Visual Studio 프로젝트 파일
232+
└── out/ # 빌드 결과물 저장 폴더 (자동 생성)
233+
└── bin/ # 실행 파일 저장 위치
234+
├── WOL.x64.Release.exe
235+
├── WOL.x86.Release.exe
236+
└── WOL.ARM64.Release.exe
237+
```
238+
239+
---
240+
241+
## 📄 라이선스
242+
243+
이 프로젝트는 **MIT 라이선스** 하에 배포됩니다.
244+
245+
```
246+
SPDX-License-Identifier: MIT
247+
```
248+
249+
자유롭게 사용, 수정, 배포하실 수 있습니다.
250+
251+
---
252+
253+
## 🤝 기여 및 지원
254+
255+
### 버그 신고 및 기능 제안
256+
GitHub Issues를 통해 버그 신고나 새로운 기능을 제안해 주세요:
257+
- 🐛 **버그 신고**: 문제 상황과 재현 방법을 상세히 작성
258+
- 💡 **기능 제안**: 필요한 기능과 사용 사례 설명
259+
- 📚 **문서 개선**: 이해하기 어려운 부분이나 누락된 내용 지적
260+
261+
### 개발 참여
262+
Pull Request를 통한 코드 기여를 환영합니다:
263+
1. 프로젝트 Fork
264+
2. 기능 브랜치 생성 (`git checkout -b feature/new-feature`)
265+
3. 변경사항 커밋 (`git commit -am '새 기능 추가'`)
266+
4. 브랜치에 Push (`git push origin feature/new-feature`)
267+
5. Pull Request 생성
268+
269+
### 문의
270+
- **이메일**: ohsungsik@outlook.com
271+
- **GitHub Discussions**: 일반적인 질문과 토론
272+
- **GitHub Issues**: 버그 신고 및 기능 요청

WOL.sln

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
2+
Microsoft Visual Studio Solution File, Format Version 12.00
3+
# Visual Studio Version 17
4+
VisualStudioVersion = 17.14.36109.1
5+
MinimumVisualStudioVersion = 10.0.40219.1
6+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WOL", "WOL.vcxproj", "{4F6AE7D4-8D70-4F41-A153-0D237BE4F8CF}"
7+
EndProject
8+
Global
9+
GlobalSection(SolutionConfigurationPlatforms) = preSolution
10+
Debug|ARM64 = Debug|ARM64
11+
Debug|x64 = Debug|x64
12+
Debug|x86 = Debug|x86
13+
Release|ARM64 = Release|ARM64
14+
Release|x64 = Release|x64
15+
Release|x86 = Release|x86
16+
EndGlobalSection
17+
GlobalSection(ProjectConfigurationPlatforms) = postSolution
18+
{4F6AE7D4-8D70-4F41-A153-0D237BE4F8CF}.Debug|ARM64.ActiveCfg = Debug|ARM64
19+
{4F6AE7D4-8D70-4F41-A153-0D237BE4F8CF}.Debug|ARM64.Build.0 = Debug|ARM64
20+
{4F6AE7D4-8D70-4F41-A153-0D237BE4F8CF}.Debug|x64.ActiveCfg = Debug|x64
21+
{4F6AE7D4-8D70-4F41-A153-0D237BE4F8CF}.Debug|x64.Build.0 = Debug|x64
22+
{4F6AE7D4-8D70-4F41-A153-0D237BE4F8CF}.Debug|x86.ActiveCfg = Debug|Win32
23+
{4F6AE7D4-8D70-4F41-A153-0D237BE4F8CF}.Debug|x86.Build.0 = Debug|Win32
24+
{4F6AE7D4-8D70-4F41-A153-0D237BE4F8CF}.Release|ARM64.ActiveCfg = Release|ARM64
25+
{4F6AE7D4-8D70-4F41-A153-0D237BE4F8CF}.Release|ARM64.Build.0 = Release|ARM64
26+
{4F6AE7D4-8D70-4F41-A153-0D237BE4F8CF}.Release|x64.ActiveCfg = Release|x64
27+
{4F6AE7D4-8D70-4F41-A153-0D237BE4F8CF}.Release|x64.Build.0 = Release|x64
28+
{4F6AE7D4-8D70-4F41-A153-0D237BE4F8CF}.Release|x86.ActiveCfg = Release|Win32
29+
{4F6AE7D4-8D70-4F41-A153-0D237BE4F8CF}.Release|x86.Build.0 = Release|Win32
30+
EndGlobalSection
31+
GlobalSection(SolutionProperties) = preSolution
32+
HideSolutionNode = FALSE
33+
EndGlobalSection
34+
GlobalSection(ExtensibilityGlobals) = postSolution
35+
SolutionGuid = {7A9C4672-0120-4D28-A7F3-73AB59A9231F}
36+
EndGlobalSection
37+
EndGlobal

0 commit comments

Comments
 (0)