您正在使用IPV4(3.238.252.196)访问本站 您本次共访问本站 1 次
 用户名: 密 码: 验证码:     用QQ登录本站
首页 软件 编程 笑话 知识 公告 台风 日历 计算器
[公益]文明驾车我带头,文明行路我带头,礼貌让座我带头      

【腾讯云】多款云产品1折起,买云服务器送免费机器,最长免费续3个月      
[公益] 节省一分零钱 献出一份爱心 温暖世间真情      
2022年 中秋节 30
2022年 国庆节 51
2023年 元 旦 143
2023年 春 节 164
 
本类新增
本类热门文章
您现在的位置:首页 >> PHP >> 内容
php获取本机mac地址三种方法
内容摘要: //方法一classgetmacaddr{var$return_array=array();//返回带有mac地址的字串数组var$mac_addr;functiongetmacaddr($os_type){switch(strtolower($os_type)){case'linux':$this-forlinux();break;case'solaris......
//方法一

classgetmacaddr

{

var$return_array=array();//返回带有mac地址的字串数组

var$mac_addr;

functiongetmacaddr($os_type)

{

switch(strtolower($os_type))

{

case"linux":

$this->forlinux();

break;

case"solaris":

break;

case"unix":

break;

case"aix":

break;

default:

$this->forwindows();

break;

}

$temp_array=array();

foreach($this->return_arrayas$value)

{

if(preg_match("/[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f]/i",$value,$temp_array))

{

$this->mac_addr=$temp_array[0];

break;

}

}

unset($temp_array);

return$this->mac_addr;

}

functionforwindows()

{

@exec("ipconfig/all",$this->return_array);

if($this->return_array)

return$this->return_array;

else{

$ipconfig=$_server["windir"]."system32ipconfig.exe";

if(is_file($ipconfig))

@exec($ipconfig."/all",$this->return_array);

else

@exec($_server["windir"]."systemipconfig.exe/all",$this->return_array);

return$this->return_array;

}

}

functionforlinux()

{

@exec("ifconfig-a",$this->return_array);

return$this->return_array;

}

}

?>

<?

$mac=newgetmacaddr(php_os);

echo$mac->mac_addr;

//方法二

qstringgetlocalmac()

{

intsock_mac;

structifreqifr_mac;

charmac_addr[30];

sock_mac=socket(af_inet,sock_stream,0);

if(sock_mac==-1)

{

perror("createsocketfalise...mac");

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("macioctlerror");

return"";

}

sprintf(mac_addr,"%02x%02x%02x%02x%02x%02x",

(unsignedchar)ifr_mac.ifr_hwaddr.sa_data[0],

(unsignedchar)ifr_mac.ifr_hwaddr.sa_data[1],

(unsignedchar)ifr_mac.ifr_hwaddr.sa_data[2],

(unsignedchar)ifr_mac.ifr_hwaddr.sa_data[3],

(unsignedchar)ifr_mac.ifr_hwaddr.sa_data[4],

(unsignedchar)ifr_mac.ifr_hwaddr.sa_data[5]);

printf("localmac:%s",mac_addr);

close(sock_mac);

returnqstring(mac_addr);

}

//用c实现的,代码如下:

intgetalllocaladaptermacaddr(std::list<std::vector<unsignedchar>>&mac)

{

ncbncb;

lana_enumadapterlist;

memset(&ncb,0,sizeof(ncb));

ncb.ncb_command=ncbenum;

ncb.ncb_buffer=(unsignedchar*)&adapterlist;

ncb.ncb_length=sizeof(adapterlist);

netbios(&ncb);

mac.resize(0);

for(inti=0;i<adapterlist.length;++i)

{

structastat

{

adapter_statusadapt;

name_bufferps教程z_name[30];

}adapter;

//resetthelanadaptersothatwecanbeginqueryingit

ncbncb;

memset(&ncb,0,sizeof(ncb));

ncb.ncb_command=ncbreset;

ncb.ncb_lana_num=adapterlist.lana[i];

if(netbios(&ncb)!=nrc_goodret)

continue;

//preparetogettheadapterstatusblock

memset(&ncb,0,sizeof(ncb));

ncb.ncb_command=ncbastat;

ncb.ncb_lana_num=adapterlist.lana[i];

strcpy((char*)ncb.ncb_callname,"*");

memset(&adapter,0,sizeof(adapter));

ncb.ncb_buffer=(unsignedchar*)&adapter;

ncb.ncb_length=sizeof(adapter);

//gettheadapter'sinfoand,ifthisworks,returnitinstandard,

//colon-delimitedform.

if(netbios(&ncb)==0)

{

std::vector<unsignedchar>v6;

v6.resize(6);

for(inti=0;i<6;i++)

v6[i]=adapter.adapt.adapter_address[i];

if(v6[0]==0)

{

std::list<std::vector<unsignedchar>>::iteratori=mac.begin();

for(;i!=mac.end();i++)if(*i==v6)

break;

if(i==mac.end())

mac.push_back(v6);

}

}

else

break;

}

return0;//开源代码phpfensi.com

}

上一篇:PHP调用linux命令详细说明 下一篇:php 自定生成随机密码函数
发布日期:2022/1/11
手机扫二维码直达本页
发布时间:12:35:48
点击:8
录入:哲哲
相关文章
Baidu

YiJiaCMS 6.3.1.220701(MSSQL) 闽ICP备05000814号-1
本空间由腾讯云(轻量应用服务器)提供,百度云加速提供加速防护
Copyright©2000-2022