티스토리 뷰
반응형
[wpf/c#/unity] Wake On Lan 사용하기(원격부팅)
WakeOnLan
#매직패킷을 활용하여 Lan으로 PC를 부팅하는 방법
[조건]
#랜카드 저전력 모드 Off, 매직패킷,WakeOnLan 기능 활성화
#바이오스 PCI-E 기능 켜기
#유선랜으로 연결
#구현 코드
public class WakeOnLan : UdpClient
{
public WakeOnLan()
: base()
{
}
/// <summary>
/// 컴퓨터 부팅 하기
/// </summary>
/// <param name="macAddress">부팅 할 컴퓨터의 맥어드레스</param>
public void TurnOnPC(string macAddress)
{
this.Connect(new System.Net.IPAddress(0xffffffff), 0x2fff); //255.255.255.255 : 12287
MagicPacket(macAddress);
}
public void TurnOnPC(string ip, string macAddress)
{
this.Connect(ip, 12287); //255.255.255.255 : 12287
MagicPacket(macAddress);
}
private void MagicPacket(string macAddress)
{
if (this.Active)
{
this.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 0);
}
byte[] bytes = GetMagicPacketToByteArray(macAddress);
// 컴퓨터를 부팅 할 매직패킷을 보낸다.
int reterned_value = this.Send(bytes, 1024);
}
private byte[] GetMagicPacketToByteArray(string macAddress)
{
// 보낼 바이트 초기화
int counter = 0;
// 보낼 버퍼 초기화
byte[] bytes = new byte[1024];
// 처음 6개 바이트는 "0xFF"
for (int y = 0; y < 6; y++)
bytes[counter++] = 0xFF;
// 부팅 할 컴퓨터의 맥어드레스를 16번 반복한다.
for (int y = 0; y < 16; y++)
{
int i = 0;
for (int z = 0; z < 6; z++)
{
bytes[counter++] =
byte.Parse(macAddress.Substring(i, 2),
System.Globalization.NumberStyles.HexNumber);
i += 2;
}
}
return bytes;
}
}
#활용 코드
public void OnPC()
{
WakeOnLan wol = new WakeOnLan();
wol.TurnOnPC("3C18A0D4C26B");
}
#Unity #C# #Winform #WakeOnLan #MagicPacket #원격부팅
반응형
'c#' 카테고리의 다른 글
[wpf/c#] mvvm light를 이용한 간단한 샘플 프로그램(소스) (0) | 2022.02.24 |
---|---|
[wpf/c#] MVVM 기본 개념 및 설명 (소스 기반) (0) | 2022.02.24 |
[C#/wpf/unity] ftp 라이브러리 (0) | 2022.02.15 |
[wpf/c#] wpf에서 fade in 구현(Animation 이용) (0) | 2021.12.21 |
[C#/WPF] MediaElement(미디어엘리먼트)에서 Video Duration(재생시간) 가져오기 (0) | 2021.12.11 |
댓글
반응형