c 语言 网络唤醒,网络唤醒 C语言

#include

#include

#include

#include

#include

#include

#include

int main(int argc, char* argv[])

{

if (argc!=3||argc!=5) {

printf("\nUsage:  %s  -mac 00:10:20:30:40:50  -adr 192.168.1.255\n",argv[0]);

}

unsigned char mac[6]={0x00,0x10,0x20,0x30,0x40,0x50};//目的主机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

if (!strcmp(argv[i],"-mac")){

sscanf(argv[i+1], "%02x:%02x:%02x:%02x:%02x:%02x", &mac[0], &mac[1], &mac[2], &mac[3], &mac[4], &mac[5]);

printf("Mac is %s,mac is %02x%02x%02x%02x%02x%02x\n",argv[i+1],mac[0],mac[1],mac[2],mac[3],mac[4],mac[5]);

}

if (!strcmp(argv[i],"-adr")){

strcpy(adr,argv[i+1]);

printf("广播地址 is %s\n",adr);

}

}

//构建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("192.168.1.255");//广播地址

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

close(sockfd);

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值