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

代码如下:

/*************************************************************************
 > File Name: wake_up.c
 > Author: wz
 > Created Time: Fri 15 Nov 2013 03:42:47 PM CST
 ************************************************************************/

#include<unistd.h>
#include<arpa/inet.h>
#include<net/if.h>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<sys/ioctl.h>

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;

}

(0)

相关推荐

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

    复制代码 代码如下: /************************************************************************* > File Name: wake_up.c > Author: wz > Created Time: Fri 15 Nov 2013 03:42:47 PM CST ************************************************************************/ #i

  • ASP.NET餐饮管理系统制作代码分享

    页面介绍展示: 以上是餐饮管理系统制作图片介绍,接下来是代码部分. menu.aspx  <%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="menu.aspx.cs" Inherits="menu" Title="无标题页" %> <

  • Python获取远程文件大小的函数代码分享

    复制代码 代码如下: def getRemoteFileSize(url, proxy=None):    """ 通过content-length头获取远程文件大小        url - 目标文件URL        proxy - 代理  """    opener = urllib2.build_opener()    if proxy:        if url.lower().startswith('https://'):    

  • 纯JS单页面赛车游戏制作代码分享

    分享一个以前写的小游戏,纯js游戏,代码很简单.欢迎大家来喷呦! 效果图: 代码展示://直接复制到html文件即可 支持IE9+版本 <!DOCTYPE html> <html> <head> <meta charset="{CHARSET}"> <title>Best Fly Car</title> <style> input { border: 1px solid yellow; margin-l

  • JS html时钟制作代码分享

    时钟效果图: 闲来无聊做了一个网页的时钟,效果模拟传统时钟的运行方式, 运用了html 的画布实现指针,背景图片引用了网络图片. 具体原理: 首先将时钟分为四个不同区域,对每个区域计算cos,sin 来确实指针顶点位置.在通过画布来绘画出指针. 通过setInterval 每秒刷新指针位置实现 传统机械表针的动态跳动. 本人是JS开发程序员,从业1年多.闲来无聊的简单页面, 欢迎大家提问,或者建议.共同进步 代码部分,直接复制HTML 文件中即可查看效果: <!DOCTYPE html> &l

  • C#实现开机自动启动设置代码分享

    /// <summary> /// 设置程序开机启动 /// 或取消开机启动 /// </summary> /// <param name="started">设置开机启动,或者取消开机启动</param> /// <param name="exeName">注册表中程序的名字</param> /// <param name="path">开机启动的程序路径<

  • php日历制作代码分享

    calendar.class.php 复制代码 代码如下: <?phpclass Calendar {  private $year; //当前的年  private $month; //当前的月  private $start_weekday; //当月的第一天对应的是周几  private $days; //当前月一共多少天 function __construct(){   $this->year=isset($_GET["year"]) ? $_GET["

  • 数字金额大写转换器制作代码分享(人民币大写转换)

    复制代码 代码如下: /// <summary>/// 人民币大写/// </summary>/// <param name="input">待转换输入</param>/// <param name="prefix">需要添加人民币前缀</param>/// <exception cref="ArgumentException" />/// <returns

  • c#实现windows远程桌面连接程序代码

    使用winform制作windows远程桌面连接程序,windows自带了远程桌面连接,我们需要将远程桌面连接集成 到自己的winform程序,并实现管理远程主机的配置. 远程桌面核心类库 windows系统自带了远程桌面activex dll,目录: c:\Windows\System32\mstscax.dll 此类库无法使用c#直接调用,介绍一个工具AxImp.exe AxImp.exe https://msdn.microsoft.com/zh-cn/library/8ccdh774(V

  • Java编程接口调用的作用及代码分享

    很多JAVA初级程序员对于接口存在的意义很疑惑.不知道接口到底是有什么作用,为什么要定义接口. 好像定义接口是提前做了个多余的工作.下面我给大家总结了4点关于JAVA中接口存在的意义: 1.重要性:在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制.正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力. 2.简单.规范性:如果一个项目比较庞大,那么就需要一个能理清所有业务的架构师来定义一些主要的接口,这些接口不仅告诉开发人员你需要实现那些

随机推荐