ios & android get mac address
2013-03-07 15:14
295 查看
unsigned char *ptr;
#ifndef SIOCGIFHWADDR
int mib[6];
size_t len;
char *buf;
struct if_msghdr *ifm;
struct sockaddr_dl *sdl;
mib[0] = CTL_NET;
mib[1] = AF_ROUTE;
mib[2] = 0;
mib[3] = AF_LINK;
mib[4] = NET_RT_IFLIST;
if ((mib[5] = if_nametoindex("en0")) == 0) {
return "";
}
if (sysctl(mib, 6, NULL, &len, NULL, 0) < 0) {
return "";
}
if ((buf = (char*)malloc(len)) == NULL) {
return "";
}
if (sysctl(mib, 6, buf, &len, NULL, 0) < 0) {
free(buf);
buf = NULL;
return "";
}
ifm = (struct if_msghdr *)buf;
sdl = (struct sockaddr_dl *)(ifm + 1);
ptr = (unsigned char *)LLADDR(sdl);
#else
int sock_mac;
struct ifreq ifr_mac;
char mac_addr[30];
sock_mac = socket( AF_INET, SOCK_STREAM, 0 );
if( sock_mac == -1)
{
perror("create socket falise...mac\n");
return "";
}
memset(&ifr_mac,0,sizeof(ifr_mac));
strncpy(ifr_mac.ifr_name, "eth0", sizeof(ifr_mac.ifr_name)-1);
if( (ioctl(sock_mac, SIOCGIFHWADDR, &ifr_mac)) < 0)
{
printf("mac ioctl error\n");
return "";
}
ptr = (unsigned char*)ifr_mac.ifr_hwaddr.sa_data;
close( sock_mac );
#endif
#ifndef SIOCGIFHWADDR
int mib[6];
size_t len;
char *buf;
struct if_msghdr *ifm;
struct sockaddr_dl *sdl;
mib[0] = CTL_NET;
mib[1] = AF_ROUTE;
mib[2] = 0;
mib[3] = AF_LINK;
mib[4] = NET_RT_IFLIST;
if ((mib[5] = if_nametoindex("en0")) == 0) {
return "";
}
if (sysctl(mib, 6, NULL, &len, NULL, 0) < 0) {
return "";
}
if ((buf = (char*)malloc(len)) == NULL) {
return "";
}
if (sysctl(mib, 6, buf, &len, NULL, 0) < 0) {
free(buf);
buf = NULL;
return "";
}
ifm = (struct if_msghdr *)buf;
sdl = (struct sockaddr_dl *)(ifm + 1);
ptr = (unsigned char *)LLADDR(sdl);
#else
int sock_mac;
struct ifreq ifr_mac;
char mac_addr[30];
sock_mac = socket( AF_INET, SOCK_STREAM, 0 );
if( sock_mac == -1)
{
perror("create socket falise...mac\n");
return "";
}
memset(&ifr_mac,0,sizeof(ifr_mac));
strncpy(ifr_mac.ifr_name, "eth0", sizeof(ifr_mac.ifr_name)-1);
if( (ioctl(sock_mac, SIOCGIFHWADDR, &ifr_mac)) < 0)
{
printf("mac ioctl error\n");
return "";
}
ptr = (unsigned char*)ifr_mac.ifr_hwaddr.sa_data;
close( sock_mac );
#endif
相关文章推荐
- Mac OS X下配置Cocos2d-x for Android(Eclipse)&IOS(Xcode)开发环境
- mac下面xcode+ndk7配置cocos2dx & box2d的跨ios和android平台的游戏教程
- mac下面xcode+ndk7配置cocos2dx & box2d的跨ios和android平台的游戏教程
- Mac OS X下配置Cocos2d-x for Android(Eclipse)&IOS(Xcode)开发环境
- Mac OS X下配置Cocos2d-x for Android(Eclipse)&IOS(Xcode)开发环境
- mac下面xcode+ndk7配置cocos2dx & box2d的跨ios和android平台的游戏教程
- Mac 下 Cocos2d-x跨android&ios平台开发入门教程
- get ip address & mac address
- 在Mac上搭建React Native开发环境(iOS && Android)
- Mac&iOS之多线程
- Tensorflow编译Android版本步骤及填坑(CentOS && Mac)
- 在Quick-cocos2dx中使用云风pbc解析Protocol Buffers,支持win、mac、ios、android
- COCOS2D-X跨ANDROID&IOS平台开发入门教程
- React Native优秀的第三方插件(Android & iOS)
- Error:(32) android studio开发,报错undefined reference to `AndroidBitmap_getInfo'
- IOS 网络浅析-(四 get&post)
- 记录 cocos2dx ios&android遇到的一些注意问题
- (转)Unity3D研究院之IOS&Android收集Log文件
- Android: How to get Address from geolocation using Geocoder
- Mac&iOS Socket编程(转)