我有4臺通過局域網連接的電腦。我正在做一個PHP程序,將 區分每臺電腦分開,我會保持每個電腦記錄。如何知道2局域網電腦是與我的程序在php?
但是,當我得到一個IP地址,我得到了所有相同的IP。我想我應該分別檢索所有個人電腦的MAC地址,但我不知道如何取MAC地址。
我正在使用Linux操作系統。
編程技巧將不勝感激。
我有4臺通過局域網連接的電腦。我正在做一個PHP程序,將 區分每臺電腦分開,我會保持每個電腦記錄。如何知道2局域網電腦是與我的程序在php?
但是,當我得到一個IP地址,我得到了所有相同的IP。我想我應該分別檢索所有個人電腦的MAC地址,但我不知道如何取MAC地址。
我正在使用Linux操作系統。
編程技巧將不勝感激。
據我所知,你不能單獨使用PHP來做到這一點。不過,如果你在服務器上執行exec()權,你也許可以使用:
arp -a ipaddress
ipaddress是你的局域網上的計算機的IP地址。你需要使用類似regex的東西來分離輸出的其餘部分的MAC地址。
我必須通過局域網或單個PC保持pc的每個性能。我猜測「http」頭保持所有的每個pc區分。如果我解析「http」,那麼我可能知道哪些正在訪問我的程序。這是正確的嗎 ? – 2010-10-31 13:30:21
計算機的MAC地址是特定於計算機的網卡,而IP地址不是。您可以通過比較其MAC地址來區分一臺機器和另一臺機器。除非我錯誤理解你的問題,否則我認爲你不需要進入HTTP頭部領域(因爲ping和ARP請求不涉及HTTP頭部)。 HTTP標題不包含MAC地址。 – 2010-10-31 14:12:20
PEAR的Net_Ping是一個niffty包裝類,用於執行來自PHP的ping調用。您可以使用它來檢查遠程服務器是否正確響應。圖書館可以從here下載。
pear install Net_Ping-2.4.4
<?php
require_once "Net/Ping.php";
$ping = Net_Ping::factory();
if(PEAR::isError($ping))
echo $ping->getMessage();
else
{
/* Number of packets to send */
$ping->setArgs(array('count' => 4));
$rawData = $ping->ping('google.com');
print_r($rawData);
}
?>
一些相關的文件不像Pear.php那樣。 – 2010-10-31 13:40:34
我相信它的操作系統是依賴的,請檢查梨文檔http://pear.php.net/manual/ – Sudantha 2010-10-31 13:42:55
我不認爲mac-address被包含在http-header中。所以它可能很難通過php獲取。我認爲你最好試着解決ip問題。對不起,我幫不了你。
編輯: 其實......周圍一點點搜索我發現了一個可能的解決方案:
$mac = `ping -c 1 $ip && arp -a | grep $ip`
你很可能得雖然解析輸出。我得到: xxx.xxx.local(192.168.0.10)在D5:C2:C3:13:A2: :在eth0
在做的arp -a 192.168.0.10
編輯B1 [醚]像狀態下的帖子一樣,您需要exec權限。
編輯: 對不起,只是意識到,爲了這個工作,你需要ip ...你沒有。
*「當我得到一個IP地址,我得到相同的IP爲所有」*。你如何獲得IP? – 2010-10-31 13:19:26
嗨,你想做什麼?您是否正在尋找運行PHP代碼的服務器的IP地址?或者你想添加檢查局域網中有多少臺機器也運行相同的應用程序?請詳細說明。 – 2010-10-31 13:22:07