logo

Program för att fjärrstarta en dator över internet med hjälp av Wake-on-LAN-protokollet.

Wake-on-LAN (WoL) är en Ethernet- eller tokenring-datornätverksstandard som gör att en dator kan slås på eller väckas av ett nätverksmeddelande. 

  • Meddelandet skickas vanligtvis till måldatorn av ett program som körs på en enhet som är ansluten till samma lokala nätverk som en smartphone.
  • Det är också möjligt att initiera meddelandet från ett annat nätverk genom att använda subnät-riktade sändningar eller en WOL-gatewaytjänst.
  • Motsvarande termer inkluderar wake on WAN remote wake-up power on by LAN power up by LAN resume by LAN resume on LAN and wake up on LAN.

Funktionsprincip  

sortera arraylist java
  • Wake-on-LAN ('WOL') implementeras med hjälp av ett specialdesignat paket som kallas ett magiskt paket som skickas till alla datorer i ett nätverk, däribland datorn som ska väckas.
  • Det magiska paketet innehåller destinationsdatorns MAC-adress ett identifieringsnummer inbyggt i varje nätverkskort ('NIC') eller andra Ethernet-enheter i en dator som gör att den kan identifieras och adresseras unikt i ett nätverk.
  • Avstängda eller avstängda datorer som kan Wake-on-LAN kommer att innehålla nätverksenheter som kan "lyssna" på inkommande paket i lågenergiläge medan systemet är avstängt.
  • Om ett magiskt paket tas emot som riktas till enhetens MAC-adress signalerar nätverkskortet datorns strömförsörjning eller moderkort för att initiera systemets väckning ungefär på samma sätt som att trycka på strömbrytaren skulle göra.
  • Det magiska paketet skickas på datalänklagret (lager 2 i OSI-modellen) och när det skickas sänds det till alla anslutna enheter på ett givet nätverk med hjälp av nätverkssändningsadressen; IP-adressen (lager 3 i OSI-modellen) används inte.

För att Wake-on-LAN ska fungera måste delar av nätverksgränssnittet vara kvar. Detta förbrukar en liten mängd standby-ström mycket mindre än normal driftkraft. Att inaktivera wake-on-LAN när det inte behövs kan därför variera något minska strömförbrukningen på datorer som är avstängda men fortfarande anslutna till ett eluttag.



Magisk paketstruktur  
Det magiska paketet är en sändningsram som innehåller var som helst inom dess nyttolast 6 byte av alla 255 (FF FF FF FF FF FF i hexadecimal) följt av sexton upprepningar av måldatorns 48-bitars MAC-adress för totalt 102 byte. 
Eftersom det magiska paketet endast skannas efter strängen ovan och faktiskt inte tolkas av en full protokollstack kan det skickas som vilket nätverks- och transportlagerprotokoll som helst även om det vanligtvis skickas som ett UDP-datagram till port 0 7 eller 9 eller direkt över Ethernet som EtherType 0x0842.

ramverk för java samlingar

Ett standard magiskt paket har följande grundläggande begränsningar:   

  1. Kräver måldatorns MAC-adress (kan även kräva ett SecureOn-lösenord).
  2. Lämna inte en leveransbekräftelse.
  3. Fungerar kanske inte utanför det lokala nätverket.
  4. Kräver hårdvarustöd för Wake-On-LAN på måldatorn.
  5. De flesta trådlösa 802.11-gränssnitt upprätthåller inte en länk i lågeffekttillstånd och kan inte ta emot ett magiskt paket.

Wake-on-LAN-implementeringen är designad för att vara mycket enkel och att snabbt bearbetas av kretsen som finns på nätverkskortet med minimalt strömbehov. Eftersom Wake-on-LAN fungerar under IP-protokolllagret krävs MAC-adressen och gör IP-adresser och DNS-namn meningslösa.

C
// C program to remotely Power On a PC over the // internet using the Wake-on-LAN protocol. #include  #include  #include  #include  #include  #include    #include  #include  int main() {  int i;  unsigned char toSend[102]mac[6];  struct sockaddr_in udpClient udpServer;  int broadcast = 1 ;  // UDP Socket creation  int udpSocket = socket(AF_INET SOCK_DGRAM 0);  // Manipulating the Socket  if (setsockopt(udpSocket SOL_SOCKET SO_BROADCAST  &broadcast sizeof broadcast) == -1)  {  perror('setsockopt (SO_BROADCAST)');  exit(EXIT_FAILURE);  }  udpClient.sin_family = AF_INET;  udpClient.sin_addr.s_addr = INADDR_ANY;  udpClient.sin_port = 0;  //Binding the socket  bind(udpSocket (struct sockaddr*)&udpClient sizeof(udpClient));  for (i=0; i<6; i++)  toSend[i] = 0xFF;  // Let the MAC Address be ab:cd:ef:gh:ij:kl  mac[0] = 0xab; // 1st octet of the MAC Address  mac[1] = 0xcd; // 2nd octet of the MAC Address  mac[2] = 0xef; // 3rd octet of the MAC Address  mac[3] = 0xgh; // 4th octet of the MAC Address  mac[4] = 0xij; // 5th octet of the MAC Address  mac[5] = 0xkl; // 6th octet of the MAC Address  for (i=1; i<=16; i++)  memcpy(&toSend[i*6] &mac 6*sizeof(unsigned char));  udpServer.sin_family = AF_INET;  // Broadcast address  udpServer.sin_addr.s_addr = inet_addr('10.89.255.255');  udpServer.sin_port = htons(9);  sendto(udpSocket &toSend sizeof(unsigned char) * 102 0  (struct sockaddr*)&udpServer sizeof(udpServer));  return 0; } 

Produktion: 

This program will power on the switched-off PC  
whose MAC Address is used in this program (the
PC and the Host computer must be connected over
LAN).

Referens:  
https://en.wikipedia.org/wiki/Wake-on-LAN
 

python-initieringslista
Skapa frågesport