to hover_online(ξ芎メ)楼主问的问题并没有错,只不过要实现稍微有点难度~~其实他只是需要记录MAC地址对应的IP地址而已~~~这和用不用MAC地址通信没有关系~~~ARP_RARP分别对应的就是IP=>MAC,MAC=>IP。 而且完全可以利用MAC地址得到IP地址~~~再指出一个小毛病~~并不是只有交换机才可以用MAC地址~~~ 如果你是2K的系统~~~你用 arp -a 命令看看你的缓冲就明白了~~~~
/***************************** *function : get ip and mac of client *parameter : mode,msgString *returnvalue: *discribe : shell_exec arp IP in linux sys *foundtime : *****************************/ function getClientIp($AiType=0){ $sMac = ""; $ip= getenv("REMOTE_ADDR"); $ip1 = getenv("HTTP_X_FORWARDED_FOR"); $ip2 = getenv("HTTP_CLIENT_IP"); ($ip1) ? $ip = $ip1 : null; ($ip2) ? $ip = $ip2 : null; if ($AiType > 1) { $sCmd = "arp $ip"; $sString = shell_exec($sCmd); for($iCount=0;$iCount<10;$iCount++) $sString=str_replace(" "," ",$sString); $aTemp = split(" ",$sString); $sMac = trim($aTemp[count($aTemp)-3]); } switch($AiType) { case 0: $sResult = ""; break; case 1: $sResult = $ip; break; case 2: $sResult = $sMac; break; case 3: $sResult = $ip . " " . $sMac; break; default: $sResult = ""; break; } return $sResult; } -------------------------- win下面执行ntbstat -a ip
要程序的话联系我~~http://www.xxiyy.com/mail/
你说的功能跟不是ip层可以干的事情,只有数据链路层设备(如交换机)才可以根据mac地址转发。你的问法我觉得是有问题的,在IP层或者IP以上的层,MAC与通讯时没有关系的,所以你不能根据MAC地址得到IP地址。
php可以得到访问者的IP地址,页可以通过执行一些命令得到MAC地址。
而且完全可以利用MAC地址得到IP地址~~~再指出一个小毛病~~并不是只有交换机才可以用MAC地址~~~
如果你是2K的系统~~~你用 arp -a 命令看看你的缓冲就明白了~~~~
*function : get ip and mac of client
*parameter : mode,msgString
*returnvalue:
*discribe : shell_exec arp IP in linux sys
*foundtime :
*****************************/
function getClientIp($AiType=0){
$sMac = "";
$ip= getenv("REMOTE_ADDR");
$ip1 = getenv("HTTP_X_FORWARDED_FOR");
$ip2 = getenv("HTTP_CLIENT_IP");
($ip1) ? $ip = $ip1 : null;
($ip2) ? $ip = $ip2 : null;
if ($AiType > 1)
{
$sCmd = "arp $ip";
$sString = shell_exec($sCmd);
for($iCount=0;$iCount<10;$iCount++)
$sString=str_replace(" "," ",$sString);
$aTemp = split(" ",$sString);
$sMac = trim($aTemp[count($aTemp)-3]);
}
switch($AiType)
{
case 0:
$sResult = "";
break;
case 1:
$sResult = $ip;
break;
case 2:
$sResult = $sMac;
break;
case 3:
$sResult = $ip . " " . $sMac;
break;
default:
$sResult = "";
break;
}
return $sResult;
}
--------------------------
win下面执行ntbstat -a ip
________________________
你没有看清,我实说 "例如交换机",只是这个设备在二层比较典型,所有的通讯就是要从高层到低层过程,都要化为bit流,所以pc机上当然也可以得到mac地址, 例如你所说的 arp -a 但是对于php来讲,他不需要知道MAC地址,例如你发一封信给别人,这个封信要经过无数的 交换机和路由器, 还是可以送到另外一台机器上,事实上,你是不知道他的MAC地址,而是ip地址和掩码。
@exec("ipconfig /all",$array);
for($Tmpa;$Tmpa<count($array);$Tmpa++){
if(eregi("Physical",$array[$Tmpa])){
$getstr=explode(":",$array[$Tmpa]);
echo $getstr[1];
}
}
?>