两台装置的mac地址不能相同!!!
mac地址相同,即使ip地址不同,执行ping命令的时候,也会造成网络不同,或者丢失数据报现象。
通过串口连接装置,否则down命令之后网口就无法启动了。(或者有多个网口也行)
设置装置Mac地址的三步骤:
1)ifconfig eth0 down //eth0 为对应的网卡名称,下同。
2)ifconfig eth0 hw ether 00:01:22:33:11:02 //(有的装置的mac地址的第一个字节的第二位必须是0)
3)ifconfig eth0 down
ps:
mac地址是6个字节;ipV4是4个字节。
我们知道,接入在同一网络中的装置IP不同相同,mac地址也不能相同。
工程中,我们一般都会根据实际情况修改ip地址,但由于mac地址是出厂带的,我们一般不需要修改,实际中,遇到出厂的板卡mac地址都是一样的,这样就需要我们手动修改mac,十分的麻烦。
解决思路:通过修改将ip地址的4个字节嵌入到mac地址中,这样修改ip的同时,就能够修改mac地址,并且保证mac地址不会重复!
技巧:
ifconfig eth0 hw ether 00:01:22:33:11:02
mac地址中的 00:01:22:33:11:02 实际上是十六进制数
我们在写程序的时候,可以不必添加间隔的冒号,而是直接写,效果是一样的。
char *ip = "192.168.1.12";
unsigned uip= inet_addr(ip);
char mac[256]={0};
char cmd[256]={0};
sprintf(mac,"0001%08x",uip);//利用ip地址组成6个字节的mac地址的后4个字节,前两个字节我们定义为0001
sprintf(cmd,"ifconfig eth0 hw ether %s",mac);
system(cmd);//设置网卡eth0的mac地址