您现在的位置是:网站首页> 编程资料编程资料
局域网远程开机软件制作代码分享_linux shell_
2023-05-26
379人已围观
简介 局域网远程开机软件制作代码分享_linux shell_
/*************************************************************************
> File Name: wake_up.c
> Author: wz
> Created Time: Fri 15 Nov 2013 03:42:47 PM CST
************************************************************************/
#include
#include
#include
#include
#include
#include
#include
void get_mac(char *argv,unsigned char *save_mac)
{
int j = 0;
int num_x = 0,num_d,first = 1;
while(*argv != 0)
{
if(*argv != ':')
{
if(isdigit(*argv) && first)
{
num_x = (*argv - '0')*16;
first = 0;
argv++;
continue;
}
if(first && isalpha(*argv))
{
num_x = (10+(*argv - 'a'))*16;
first = 0;
argv++;
continue;
}
if(!first && isdigit(*argv))
{
num_x = num_x+(*argv - '0');
first = 1;
argv++;
continue;
}
if(!first && isalpha(*argv))
{
num_x = num_x + (10 + (*argv - 'a'));
first = 1;
argv++;
continue;
}
}
else
{
save_mac[j] = num_x;
num_x = 0;
argv++;
j++;
}
}
save_mac[j] = num_x;
}
int main(int argc,char *argv[])
{
int sockfd,i,j,on = 1,n;
unsigned char packet[120];
unsigned char save_mac[120];
struct sockaddr_in to;
if(argc < 2)
{
fprintf(stderr,"用法:程序名 + 目标主机物理地址");
return 1;
}
get_mac(argv[1],save_mac);
//构建magic数据包
for(i = 0; i < 6; i++)
{
packet[i] = 0xff;
}
for(i = 1; i < 17; i++)
{
memcpy(packet+i*6,save_mac,6);
}
sockfd = socket(AF_INET,SOCK_DGRAM,0);
setsockopt(sockfd,SOL_SOCKET,SO_BROADCAST,&on,sizeof(on));
if(socket < 0)
{
fprintf(stderr,"套接字创建错误\n");
return 1;
}
memset((void *)&to,0,sizeof(to));
to.sin_family = AF_INET;
to.sin_port = htons(30000);
to.sin_addr.s_addr = inet_addr("125.217.40.255");
n = sendto(sockfd,packet,sizeof(packet),0,(struct sockaddr *)&to,sizeof(to));
if(n <= 0)
{
fprintf(stderr,"发送失败!\n");
return 1;
}
else
{
printf("发送成功.\n");
}
close(sockfd);
return 0;
}
相关内容
- shell监控linux系统进程创建脚本分享_linux shell_
- Linux进程通信(IPC)方式简介_linux shell_
- linux多线程编程详解教程(线程通过信号量实现通信代码)_linux shell_
- linux中编写自己的并发队列类(Queue 并发阻塞队列)_linux shell_
- Linux oracle数据库自动备份自动压缩脚本代码_linux shell_
- Linux shell脚本编程if语句的使用方法(条件判断)_linux shell_
- Linux shell脚本中字符串连接的方法_linux shell_
- 批量转换目录下文件编码的shell脚本代码_linux shell_
- linux Nginx 日志脚本_linux shell_
- 最快捷登陆ssh 服务器的方法_linux shell_
