본문 바로가기

코딩/C#

[C#] WOL(Wake On Lan)

반응형

Remote Wake-up 이라고도 하는 Wake on Lan은 특수한 데이터 패킷(=매직 패킷)을 전송하여 네트워크 컴퓨터를 원격으로 켤 수 있는 기술이다.

컴퓨터가 꺼진 경우에도 네트워크 어댑터가 계속해서 네트워크를 "수신 대기" 하므로 특수한 패킷이 도착하면 네트워크 어댑터가 컴퓨터를 켤 수 있다.

Wake on Lan은 주로 컴퓨터 유지관리 작업을 원격으로 수행하기 위해 시스템 관리자가 사용한다. 매직 패킷을 수신하는 컴퓨터에는  Wake on Lan과

함께 작동하는 마더보드, 네트워크 어댑터, 어댑터 드라이버 및 컴퓨터 BIOS가 있어야한다.


매직패킷이란 16진수 FF FF FF FF FF FF 뒤에 맥주소를 일렬로 16번 중단 없이 이은 102Byte짜리 패킷이다. 해당 패킷을 포트지정 후 날리면 컴퓨터가 켜진다

.

사진 출처 : http://www.codeproject.com/Articles/11469/Wake-On-LAN-WOL?

[출처] WOL(Wake On Lan) - C#|작성자 으섭으섭


매직패킷을 보내기위해 같은 망에 있는 모든 랜선에 동일한 신호를 보내기위해 브로드캐스팅 방식을 사용한다.


설정경로

장치관리자 -> 네트워크 어댑터 -> 랜카드 드라이버 -> 속성 -> 고급 -> 웨이크 온 랜 사용으로 변경

장치관리자 -> 네트워크 어댑터 -> 랜카드 드라이버 -> 속성 -> 전원관리 -> 모두 체크해제

부팅 후 BIOS -> wol(Wake on Lan) 설정 <-- 각 메인보드 마다 설정 방법이 다르다.


C# 코드
using System.Net;
using System.Net.Sockets;

namespace WakeOnLan
{
    class Program
    {
        static void Main(string[] args)
        {
             byte[] mac = new byte[] {0x00, 0x07, 0x00, 0x00, 0x00, 0x00}; //mac주소  쓰면됨.
            WakeUp(mac);
         }
        
        private static void WakeUp(byte[] mac)
        {
            UdpClient client = new UdpClient();
             client.Connect(IPAddress.Broadcast, 40000);
            
            byte[] packet = new byte[17 * 6];
            
            for (int i = 0; i < 6; i++)
            {
                packet[i] =  0xFF;
            }

            for (int i = 1; i <= 16; i++)
            {
                for (int j = 0; j < 6; j++)
                {
                    packet[i * 6 + j] = mac[j];
                }
            }             
            client.Send(packet, packet.Length);            
        }
    }
}


[출처] WOL(Wake On Lan) - C#|작성자 으섭으섭


반응형

'코딩 > C#' 카테고리의 다른 글

[C#] 박싱(Boxing)  (0) 2016.03.14
[C#] 람다식(Lamda Expression)  (0) 2016.03.10
[C#] 마샬링(marshalling)  (0) 2016.03.09
[C#] 문자열 마샬링  (0) 2016.03.04
[C#] 클래스와 구조체  (0) 2016.03.03