linux 获取设置mac
来源:互联网 发布:1983星星知我心电视剧 编辑:程序博客网 时间:2024/06/06 12:21
int porting_get_mac(int socket,char *arg)
{
char *mac = arg;
u_char * ptr;
struct ifreq ifr;
if (NULL == arg)
{
printf("(out)arg is null\n");
goto LAB_ERR;
}
bzero((char *)&ifr, sizeof(ifr));
strcpy(ifr.ifr_name,"eth0");
if (ioctl(socket,SIOCGIFHWADDR,&ifr) != 0)
{
printf("(out)SIOCGIFHWADDR failed: %s\n", strerror(errno));
goto LAB_ERR;
}
ptr =(u_char *)&ifr.ifr_ifru.ifru_hwaddr.sa_data[0];
sprintf(mac, "%02x%02x%02x%02x%02x%02x",*ptr,*(ptr+1),*(ptr+2),*(ptr+3),*(ptr+4),*(ptr+5));
printf("mac=%s\n",mac);
return 0;
LAB_ERR:
return -1;
}
static int network_set_mac(int socket, char *mac)
{
struct ifreq ifr;
memset(&ifr, 0, sizeof(struct ifreq));
ifr.ifr_addr.sa_family = ARPHRD_ETHER;
strcpy(ifr.ifr_name, "eth0");
memcpy((void *)ifr.ifr_hwaddr.sa_data, mac, 6);
if (ioctl(socket, SIOCSIFHWADDR, &ifr)<0)
{
printf("CHMID_TCPIP_SetMAC SIOCSIFHWADDR failed;%s!\n",strerror(errno));
}
return 0;
LAB_ERR:
return -1;
}
int main(int argc, char *argv[])
{
//int ret=0,fd=-1;
//char buf='1';
int socket_fd;
int bReuseaddr=1;
char mac[20]={0};
socket_fd = socket(AF_INET,SOCK_DGRAM,0); //面向无连接 UDP
setsockopt(socket_fd, SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(int));
if (socket_fd < 0)
{
printf("(out)socket failed: %s\n", strerror(errno));
return -1;
}
porting_get_mac(socket_fd,mac);
memset(mac,0,20);
//98:2F:3C:0E:33:5E
mac[0]=0x98;
mac[1]=0x2F;
mac[2]=0x3C;
mac[3]=0x0E;
mac[4]=0x33;
mac[5]=0x5E;
network_set_mac(socket_fd,mac);
porting_get_mac(socket_fd,mac);
close(socket_fd);
return 0;
}
- linux 获取设置mac
- linux mac设置获取
- linux下获取/设置mac和ip
- linux获取mac地址
- linux c获取mac
- mac、linux 环境变量设置
- linux 设置网络API --- 开/关网卡、设置/获取Mac地址
- linux 设置网络API --- 开/关网卡、设置/获取Mac地址
- java 获取windows Mac 和linux Mac
- linux系统下C语言获取和设置本地MAC地址的代码
- Linux下获取MAC地址
- linux下获取mac地址
- linux c获取mac地址
- Linux下获取MAC地址
- 获取 Linux 下 MAC 地址
- linux获取MAC地址编程
- linux c获取mac地址
- linux c获取mac地址
- C++运算符重载
- 设计模式 单例模式(Singleton Pattern)
- 学习opencv(1)——一些函数
- Java线程:概念与原理
- phonegap archive 报错 Cordova/CDVViewController.h' file not found
- linux 获取设置mac
- android UI之Shape详解
- iOS应用架构谈-开篇
- 常见视频格式
- C++指向类成员函数的指针详细解析
- android4.4系统源码编译(二)_源码下载
- Codeforces Round #234 (Div. 2) 总结
- spring框架学习(第三篇)
- PHP漏洞全解(五)-跨网站请求伪造