網路喚醒 C語言

2021-09-10 02:02:57 字數 1314 閱讀 3051

wake on lan是一種網路喚醒功能,它可以實現遠端開機,剛好實驗室有一台ftp伺服器,因為不是24小時開機的,所以每次開機都要跑過去用手按開關,非常麻煩,於是在網上找了下資料,自己實現了一把,並在windows下用qt寫了個簡單的介面,以後想開伺服器就方便了。原理就是源主機廣播乙個特殊的資料報給目的主機,前提是目的主機的主機板支援wake on lan並在bios裡已經設定好,還有就是要知道目的主機的mac位址。這個特殊的資料報叫做magic packet,它由102個位元組組成,最前面六個位元組為0xff,其他位元組為目的主機的mac位址(6個位元組為一組,共16組)

#include

#include

#include

#include

#include

#include

#include

int main(int argc, char* ar**)

unsigned char mac[6]=;//目的主機mac位址,例如: 00:10:20:30:40:50

char adr[17]="";

unsigned char packet[102];

struct sockaddr_in addr;

int sockfd, i,j, on = 1;

for (int i=0 ;i

//構建magic packet

for(i=0;i<6;i++)            

packet[i] = 0xff;    

for(i=1;i<17;i++)

for(j=0;j<6;j++)

packet[i*6+j] = mac[j];

//udp

sockfd = socket(af_inet, sock_dgram, 0);

//廣播

setsockopt(sockfd, sol_socket, so_broadcast,&on, sizeof(on));

if(sockfd < 0)

exit(0);

memset((void*)&addr, 0, sizeof(addr));

addr.sin_family = af_inet;

addr.sin_port = htons(10000);

addr.sin_addr.s_addr = inet_addr(adr);//廣播位址

sendto(sockfd, packet, sizeof(packet), 0, (struct sockaddr *)&addr, sizeof(addr));

close(sockfd);

return 0;

}

C 網路喚醒

什麼是網路喚醒 網路喚醒實現了對網路的集中管理,即在任何時刻,網管中心的it管理人員可以經由網路遠端喚醒一台處於休眠或關機狀態的計算機。使用這一功能,it管理人員可以在下班後,網路流量最小以及企業的正常運作最不受影響的時候完成所有作業系統及應用軟體的公升級及其他管理任務。為了喚醒網路上的計算機,使用...

C 網路喚醒

什麼是網路喚醒 網路喚醒實現了對網路的集中管理,即在任何時刻,網管中心的it管理人員可以經由網路遠端喚醒一台處於休眠或關機狀態的計算機。使用這一功能,it管理人員可以在下班後,網路流量最小以及企業的正常運作最不受影響的時候完成所有作業系統及應用軟體的公升級及其他管理任務。為了喚醒網路上的計算機,使用...

c 網路喚醒功能實現

網路喚醒實現了對網路的集中管理,即在任何時刻,網管中心的it管理人員www.cppcns.com可以經由網路遠端喚醒一台處於休眠或關機狀態的計算機。使用這一功能,it管理人員可以在下班後,網路流量最小以及企業的正常運作最不受影響的時候完成所有作業系統及應用軟體的公升級及其他管理任務。為了喚醒網路上的...