通过IP或socket获取对方的MAC地址
来源:互联网 发布:霍光传不可不读 知乎 编辑:程序博客网 时间:2024/05/01 19:41
1.通过已经连接的socket文件获取:view plaincopy to clipboardprint?int getpeermac( int sockfd, char *buf ) { int ret =0; struct arpreq arpreq; struct sockaddr_in dstadd_in; socklen_t len = sizeof( struct sockaddr_in ); memset( &arpreq, 0, sizeof( struct arpreq )); memset( &dstadd_in, 0, sizeof( struct sockaddr_in )); if( getpeername( sockfd, (struct sockaddr*)&dstadd_in, &len ) < 0 ) err_err("getpeername()"); else { memcpy( &arpreq.arp_pa, &dstadd_in, sizeof( struct sockaddr_in )); strcpy(arpreq.arp_dev, "eth1"); arpreq.arp_pa.sa_family = AF_INET; arpreq.arp_ha.sa_family = AF_UNSPEC; if( ioctl( sockfd, SIOCGARP, &arpreq ) < 0 ) err_err("ioctl SIOCGARP"); else { unsigned char* ptr = (unsigned char *)arpreq.arp_ha.sa_data; ret = sprintf(buf, "%02x%02x%02x%02x%02x%02x", *ptr, *(ptr+1), *(ptr+2), *(ptr+3), *(ptr+4), *(ptr+5)); } } return ret; } int getpeermac( int sockfd, char *buf ){int ret =0;struct arpreq arpreq;struct sockaddr_in dstadd_in; socklen_t len = sizeof( struct sockaddr_in ); memset( &arpreq, 0, sizeof( struct arpreq ));memset( &dstadd_in, 0, sizeof( struct sockaddr_in ));if( getpeername( sockfd, (struct sockaddr*)&dstadd_in, &len ) < 0 )err_err("getpeername()"); else{memcpy( &arpreq.arp_pa, &dstadd_in, sizeof( struct sockaddr_in ));strcpy(arpreq.arp_dev, "eth1");arpreq.arp_pa.sa_family = AF_INET;arpreq.arp_ha.sa_family = AF_UNSPEC;if( ioctl( sockfd, SIOCGARP, &arpreq ) < 0 )err_err("ioctl SIOCGARP");else{unsigned char* ptr = (unsigned char *)arpreq.arp_ha.sa_data; ret = sprintf(buf, "%02x%02x%02x%02x%02x%02x", *ptr, *(ptr+1), *(ptr+2), *(ptr+3), *(ptr+4), *(ptr+5));}}return ret;} 2. 通过IP获取:view plaincopy to clipboardprint?int getpeermac_by_ip(char *ipaddr, char* buf) { int sockfd; unsigned char *ptr; struct arpreq arpreq; struct sockaddr_in *sin; struct sockaddr_storage ss; char addr[INET_ADDRSTRLEN+1]; memset(addr, 0, INET_ADDRSTRLEN+1); memset(&ss, 0, sizeof(ss)); if (argc != 2) { printf("USAGE arpg ip_addr/n"); return -1; } sockfd = socket(AF_INET, SOCK_DGRAM, 0); if (sockfd == -1) { perror("socket error"文章出处:DIY部落(http://www.diybl.com/course/3_program/c++/cppjs/20091022/179857.html#)
- 通过IP或socket获取对方的MAC地址
- 通过IP或socket获取对方的MAC地址
- 通过IP或socket获取对方的MAC地址
- 通过IP或socket获取对方的MAC地址
- 通过IP或socket获取对方的MAC地址
- 通过IP和socket获取对方的MAC地址
- 通过IP地址获取对方MAC地址的命令
- 通过socket获取对方ip地址
- 通过对方的请求 获取对方的ip地址
- 如何通过对方IP地址查对方的MAC
- 获取对方的mac地址
- 获取对方ip地址
- 通过IP或机器名获取局域网MAC地址
- 通过QQ查看对方的ip地址
- 用SendARP()获取对方的MAC地址
- 通过socket获取ip地址
- nodejs 如何获取对方的IP地址
- 通过IP获取MAC地址
- WinMobile学习笔记二
- WebToMail
- Qt4中利用Meta Object实现类拟.NET和Java的反射(Reflection)功能
- MFC应用程序中指针的使用
- c文件操作函数
- 通过IP或socket获取对方的MAC地址
- SQL中文问排序
- iscsi 来自百度百科
- 获取中文汉字首拼音字母
- list control排序问题
- 博客“评论王”评选活动开始啦!
- Windows终止线程运行的四种方法
- GetSystemMetrics 参数介绍
- STL函数