#include #include #include #include #include #include #include #include #define BUFLEN 512 #define NPACK 10 void diep(char *s) { perror(s); exit(1); } void Help(const char *file) { printf( "Use: %s -m macaddress -p port\n", file ); exit(0); } int ReadNibble( int nibble ) { if( !isxdigit( nibble ) ) return -1; if( isdigit( nibble ) ) return nibble - '0'; if( isupper( nibble ) ) return nibble - 'A' + 10; return nibble - 'a' + 10; } int DecodeMacAddress( const char *in, char *out ) { int counter = 0; int value = 0; while( *in ) { int nib = ReadNibble( *in++ ); if( -1 == nib ) { out[ counter++ ] = value; value = 0; if( counter == 6 ) return 0; continue; } value <<= 4; value += nib; } if( 5 == counter ) { out[ 5 ] = value; return 1; } return 0; } int main( int argc, char **argv ) { struct sockaddr_in si_me, si_other; int s, i, slen=sizeof(si_other); char buf[BUFLEN]; int port = 9; char mac[ 6 ] = { 0, }; for( i=1; i