php获取服务器端mac和客户端mac的地址支持WIN/LINUX_php技巧

获取服务器mac

复制代码 代码如下:

<?php
/**
获取网卡的MAC地址原码;目前支持WIN/LINUX系统
获取机器网卡的物理(MAC)地址
**/
class GetmacAddr{
var $result = array(); // 返回带有MAC地址的字串数组
var $macAddr;
/*构造*/
function __construct($osType){
switch ( strtolower($osType) ){
case "unix": break;
case "solaris": break;
case "aix": break;
case "linux": {
$this->for_linux_os();
}break;
default: {
$this->for_windows_os();
}break;
}
$temp_array = array();
foreach($this->result as $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->macAddr = $temp_array[0];
break;
}
}
unset($temp_array);
return $this->macAddr;
}
/*linux系统中获取方法*/
function for_linux_os(){
@exec("ifconfig -a", $this->result);
return $this->result;
}
/*win系统中的获取方法*/
function for_windows_os(){
@exec("ipconfig /all", $this->result);
if ( $this->result ) {
return $this->result;
} else {
$ipconfig = $_SERVER["WINDIR"]."\system32\ipconfig.exe";
if(is_file($ipconfig)) {
@exec($ipconfig." /all", $this->result);
} else {
@exec($_SERVER["WINDIR"]."\system\ipconfig.exe /all", $this->result);
return $this->result;
}
}
}
}
?>

获取客户端mac地址:

复制代码 代码如下:

@exec("arp -a",$array); //执行arp -a命令,结果放到数组$array中
foreach($array as $value){
//匹配结果放到数组$mac_array
if(strpos($value,$_SERVER["REMOTE_ADDR"]) && preg_match("/(:?[0-9A-F]{2}[:-]){5}[0-9A-F]{2}/i",$value,$mac_array)){
$mac = $mac_array[0];
break;
}
}
echo $mac;

注:客户端获取的mac不能在本机测试,只能用别的电脑访问才能输出

时间: 2024-09-20 06:25:39

php获取服务器端mac和客户端mac的地址支持WIN/LINUX_php技巧的相关文章

axis2服务器端如何取得客户端的ip地址和mac地址

问题描述 axis2服务器端如何取得客户端的ip地址和mac地址?我现在用的都是http协议的,理论上应该可以的呀! 解决方案 /** * 获取客户端IP地址,如调用方的IP,以便检查权限. * 适用于axis发布的webservice * @return */ public String getClientIpAxis() { MessageContext mc = null; HttpServletRequest request = null; try { mc = MessageConte

php获取网卡的MAC地址支持WIN/LINUX系统_php技巧

复制代码 代码如下: <?php /** 获取网卡的MAC地址原码:目前支持WIN/LINUX系统 获取机器网卡的物理(MAC)地址 **/ class GetMacAddr{ var $return_array = array(); // 返回带有MAC地址的字串数组 var $mac_addr; function GetMacAddr($os_type){ switch ( strtolower($os_type) ){ case "linux": $this->for

根据进程号获取该进程所在客户端的ip地址

ip地址|进程|客户端 create PROCEDURE dbo.SP_SPIDtoIP @SPID int AS -- SPID to MAC -- lj DECLARE @MAC as varchar(12) SELECT @MAC = NET_ADDRESS FROM master..sysprocesses WHERE SPID = @SPID -- MAC to IP DECLARE @MACDisplay as varchar(18) DECLARE @IP as varchar(1

C# Socket编程如何获取连接的远程客户端的IP地址和端口

问题描述 最近做C#Socket编程时遇到了一个非常奇怪的问题,我在A市,用了一个第三方做端口映射的软件成功实现了跨局域网进行TCP通信的问题,也就是我的办公室的电脑作为服务器,我的内网IP为172.23.21.168,端口号为51888,并用第三方软件做了端口映射,将端口映射为31669,将客户端程序发给我一个在另一个城市B市的朋友(他也处在办公室的网络中)帮我测试,他用客户端程序已经成功连接到了我的服务器,并可以成功跟我进行通信(打字聊天信息双方都能接收和发送).现在问题来了,我用C#里的s

php 获取客户端mac地址程序代码

例1 PHP代码:  代码如下 复制代码 <?php   @exec("arp -a",$array); //执行arp -a命令,结果放到数组$array中   echo "<pre>";   print_r($array); //打印获取的数组     foreach($array as $value)   {       if( //匹配结果放到数组$mac_array       strpos($value,$_SERVER["R

如何获取客户端MAC地址(三个方法)

方法一: 调用Windows的DOS命令,从输出结果中读取MAC地址: public static String getMACAddress() { String address = "";String os = System.getProperty("os.name");if ( os != null && os.startsWith("Windows")) { try { String command = "cmd.

c++-路由器获取客户端MAC地址原理是什么?如何用winsock模拟之?

问题描述 路由器获取客户端MAC地址原理是什么?如何用winsock模拟之? 前辈们好,我想通过winsock来获取client的MAC地址,查询了半天也没有结果,因此,想通过路由器获取MAC的方法来获取一点灵感. 1.路由器是如何获取客户的MAC地址的? 2.C++的winsock可以如何获取客户机MAC地址? 注意,是客户机,不是本机... 谢谢 解决方案 用sendarp API来获取其他机器mac地址.mac地址维护是交换机的功能.但是一般路由器把两种设备合并了.所以路由器存有IP到ma

mac-asp.net 2.0 C#获取客户端MAC地址。

问题描述 asp.net 2.0 C#获取客户端MAC地址. public partial class 测试 : System.Web.UI.Page { [DllImport("Iphlpapi.dll")] private static extern int SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length); [DllImport("Ws2_32.dll")] private sta

java获取访问服务器的客户机MAC地址

问题描述 求java获取访问服务器的客户机MAC地址方法?有没有知道的,帮忙贴上来,谢谢! 解决方案 解决方案二:importjava.io.IOException;importjava.net.DatagramPacket;importjava.net.DatagramSocket;importjava.net.InetAddress;importorg.apache.commons.lang3.StringUtils;importorg.slf4j.Logger;publicclassUdp