当前位置:  操作系统/服务器>linux

局域网远程开机软件制作代码分享

    来源: 互联网  发布时间:2014-10-15

    本文导语:  代码如下:/************************************************************************* > File Name: wake_up.c > Author: wz > Created Time: Fri 15 Nov 2013 03:42:47 PM CST ************************************************************************/ #include#include#include#include#include#inclu...

代码如下:

/*************************************************************************
 > 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


    
 
 

您可能感兴趣的文章:

  • VPN虚拟局域网和本地局域网共存(连上vpn后正常打开网页)
  • 如何给局域网中linux服务器设定一个局域网中使用的域名?
  • VLAN(虚拟局域网)技术工作原理介绍
  • 我用的Qemu装的Ubuntu9.10,在没有连入局域网时,怎么与我的宿主机组成局域网?
  • 服务器带一个局域网代理上网,如何监控局域各机的上网流量?
  • 我们公司在局域网中,通过Cisco路由器接DDN,连接总公司.win98可以ping到总公司路由器,但是用了win2k专业版就只能在局域网内ping,数据报出
  • 我公司只有一个21CN的邮箱,想用一台服务器把邮件收下来,然后再让局域网的机器收看,局域网的机器可以收发邮件,这台服务器该怎样配置?
  • 路由器配置:有一局域网(SCO UNIX 5.0.5)与一台主机(SCO UNIX 5.0.5)通过祯中继联接。路由器(CISCO2610作主节点)在局域的IP为IPa,广
  • iptables为什么局域网中的机器访问局域网的web服务器却不行?
  • 第一次用Linux,关于局域网配置的问题
  • 如何在局域网中实现邮件系统
  • 请教局域网中如何通过ip地址得到主机名
  • VirtualBox装RHEL如何与本机组成局域网?
  • 局域网文件传输工具 Dukto
  • 两个局域网中,postfix邮件服务器能不能相互发邮件?
  • 局域网文件共享工具 EasySMB
  • linux如何和XP组局域网?
  • 局域网配置问题
  • 局域网内域名解析
  • linux下查看局域网内的linux主机,该如何操作?
  • 局域网internet
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 局域网嗅探工具 SniffPass
  • LINUX下局域网通信的问题
  • 关于局域网的机器访问外网网站的问题
  • linux怎么通过局域网上网?
  • ****怎样在局域网里实现JSP的访问!!!!******************
  • ->>(linux上网)向大家请教:装redhatlinux后的网络设置。局域网、internet
  • ssh远程登陆访问局域网的主机?我该怎么做啊??
  • 如何访问远程局域网内的数据库?
  • 局域网的 DNS 代理 Acrylic DNS Proxy
  • 局域网通信协议框架 AirJoy
  • 局域网设备管理 IP Reg
  • JDBC连接局域网中SQLserver怎么写?
  • 局域网中,已能ping通,我如何拷另一台机子的东西
  • dos下如何使用网卡,访问局域网资源
  • 哪有redhat和98互连的文章-组局域网的方法?详细一点的,谢谢!
  • 简单问题!怎样查找所在局域网服务器的ip地址?
  • Linux局域网上网?
  • 怎么连成局域网?
  • 请问:再局域网中怎样用代理服务器,我要用GOOGLE!!
  • linux的局域网连接




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3