易截截图软件、单文件、免安装、纯绿色、仅160KB

linux下写程序检测ip冲突(ARP)

原理其实很简单,那就是广播一个arp包,然后recv,如果没有数据(这里要设置延时),那么说明这个ip是可用的,否则就检测这个数据是否为回复我们发出的arp的应答包.如果是则证明ip已被使用,否则继续等待.
这里可以看下busybox的dhcp中的检测程序。
networking/udhcp/arpping.c
C代码
/* vi: set sw=4 ts=4: */  
/*  
 * arpping.c  
 *  
 * Mostly stolen from: dhcpcd - DHCP client daemon  
 * by Yoichi Hariguchi <yoichi@fore.com>  
 */  
  
#include <netinet/if_ether.h>   
#include <net/if_arp.h>   
  
#include "common.h"   
#include "dhcpd.h"   
  
//这里是arp包的格式,其中的数据格式都是宏了,比如uint_8_t为无符char.   
struct arpMsg {   
    /* Ethernet header */  
    uint8_t  h_dest[6];     /* 00 destination ether addr */  
    uint8_t  h_source[6];   /* 06 source ether addr */  
    uint16_t h_proto;       /* 0c packet type ID field */  
  
    /* ARP packet */  
    uint16_t htype;         /* 0e hardware type (must be ARPHRD_ETHER) */  
    uint16_t ptype;         /* 10 protocol type (must be ETH_P_IP) */  
    uint8_t  hlen;   &nb


相关文档:

实战Linux Bluetooth编程(六) L2CAP编程实例

例一:发送Signaling Packet:
Signaling Command是2个Bluetooth实体之间的L2CAP层命令传输。所以得Signaling Command使用CID 0x0001.
多个Command可以在一个C-frame(control frame)中发送。
 如果要直接发送Signaling Command.需要建立SOCK_RAW类型的L2CAP连接Socket。这样才有机会自己填充Command Code,Identi ......

实战Linux Bluetooth编程 (七) SDP协议

Service Discovery Protocol(SDP)提供一种能力,让应用程序有方法发现哪种服务可用以及这种服务的特性。
服务发现协议(SDP或Bluetooth SDP)在蓝牙协议栈中对蓝牙环境中的应用程序有特殊的含意,发现哪个服务是可用的和确定这些可用服务的特征。SDP定义了bluetooth client发现可用bluetooth server服务和它们的特征的方法。 ......

Linux网络编程一步一步学 异步通讯聊天程序select

什么是异步通讯?
就是通讯任意一方可以任意发送消息,有消息来到时会收到系统提示去接收消息。
这里要用到select函数。使用步骤如下:
1、设置一个集合变量,用来存放所有要判断的句柄(file descriptors:即我们建立的每个socket、用open打开的每个文件等)
2、把需要判断的句柄加入到集合里
3、设置判断时间 ......

linux 定时器使用一

#include <sys/time.h>
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
#include <string.h>
static char *runStatusFile   = "/syscfg/etc/runStatusFile";
//static char *runStatusFile   = "runStatusFile";
FILE *pFile = NULL;
char runCou ......

linux 定时器使用二

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdarg.h>
#include <ctype.h>
#include <time.h>
#include <unistd.h>
#include <signal.h>
static char *runStatusFile   = "/syscfg/etc/runStatusFile";
FILE *pFile = NUL ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号