app 在linux下检测arp冲突
/* 得到本机的mac地址和ip地址 */
int GetLocalMac ( const char *device,char *mac,char *ip )
{
<span style="white-space:pre"> </span>int sockfd;
<span style="white-space:pre"> </span>struct ifreq req;
<span style="white-space:pre"> </span>struct sockaddr_in * sin;
<span style="white-space:pre"> </span>if ( ( sockfd = socket ( PF_INET,SOCK_DGRAM,0 ) ) ==-1 )
<span style="white-space:pre"> </span>{
<span style="white-space:pre"> </span>fprintf ( stderr,"Sock Error:%s\n\a",strerror ( errno ) );
<span style="white-space:pre"> </span> return ( -1 );
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>memset ( &req,0,sizeof ( req ) );
<span style="white-space:pre"> </span>strcpy ( req.ifr_name,device );
<span style="white-space:pre"> </span>if ( ioctl ( sockfd,SIOCGIFHWADDR, ( char * ) &req ) ==-1 )
<span style="white-space:pre"> </span>{
<span style="white-space:pre"> </span>fprintf ( stderr,"ioctl SIOCGIFHWADDR:%s\n\a",strerror ( errno ) );
<span style="white-space:pre"> </span>close ( sockfd );
<span style="white-space:pre"> </span> return ( -1 );
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>memcpy ( mac,req.ifr_hwaddr.sa_data,6 );
<span style="white-space:pre"> </span> req.ifr_addr.sa_family = PF_