2014-06-12 4 views
5

우리 회사의 Wake on LAN 프로그램을 프로그래밍하고 있습니다. ca. 우리 회사의 40-50 대의 기계가 모든 클라이언트를 깨워 야합니다.C# wake on lan 프로그램이 모든 클라이언트를 깨우지 않습니다.

private static void WakeUp(string macAddress) 
{ 
    WOLClass client = new WOLClass(); 

    client.Connect(new IPAddress(0xffffffff), 0x2fff); 
    client.SetClientToBroadcastMode(); 

    int counter = 0; 

    byte[] bytes = new byte[1024]; 

    for (int e = 0; e < 6; e++) 
    { 
     bytes[counter++] = 0xFF; 
    } 

    for (int e = 0; e < 16; e++) 
    { 
     int i = 0; 

     for (int w = 0; w < 6; w++) 
     { 
      bytes[counter++] = byte.Parse(macAddress.Substring(i, 2), NumberStyles.HexNumber); 
      i += 2; 
     } 
    } 

    int returnedValue = client.Send(bytes, 1024); 
} 

public class WOLClass : UdpClient 
{ 
    public WOLClass() 
     : base() 
    { 

    } 

    public void SetClientToBroadcastMode() 
    { 
     if (this.Active) 
     { 
      this.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 0); 
     } 
    } 
} 

하고 button_Click 이벤트에 난 그냥 WakeUp(macAddress)

대부분의 클라이언트가 정상적으로 일어나 메소드를 호출 : 클라이언트를 깨우려면이 코드를 사용합니다. 그러나 일부 클라이언트의 경우 컴퓨터가 시작되지 않고 왼쪽 상단 모서리에 약간 밑줄이 그어진 검은 색 모니터에 그대로 있습니다. 이미 모든 클라이언트에 대해 macAddress를 세 번 (ipconfig) 확인했으며 VS2012의 디버그 모드에서도 확인했습니다. 항상 동일하고 정확합니다. 그래서 그것은 맥 주소 문제가 될 수 없습니다.

누군가가 그 문제를 알고 있습니까?

제안 사항 :

답변

10

문제는 코드가 아니며 컴퓨터입니다. 하드웨어 디버깅을 시도하십시오.

참조, Wake on Lan은 마법 패킷입니다. 네트워크 카드가 그것을 얻은 다음 기계를 깨 웁니다.

그게 전부입니다.

기계가 제대로 작동해야하고, 뭔가 잘못되었습니다. 당신의 마법 패킷에 이것을 일으킬만한 것은 아무것도 없습니다 - 나는 보통 용의자 (생물학적 버전이 마음에 들었습니다.)로 시작할 것입니다.

기계가 시작되었음을 확인한 다음 (시작 중에 중지하면) 프로그래밍 문제는 아닙니다.