2010-10-31 39 views
1

我有4臺通過局域網連接的電腦。我正在做一個PHP程序,將 區分每臺電腦分開,我會保持每個電腦記錄。如何知道2局域網電腦是與我的程序在php?

但是,當我得到一個IP地址,我得到了所有相同的IP。我想我應該分別檢索所有個人電腦的MAC地址,但我不知道如何取MAC地址。

我正在使用Linux操作系統。

編程技巧將不勝感激。

+0

*「當我得到一個IP地址,我得到相同的IP爲所有」*。你如何獲得IP? – 2010-10-31 13:19:26

+0

嗨,你想做什麼?您是否正在尋找運行PHP代碼的服務器的IP地址?或者你想添加檢查局域網中有多少臺機器也運行相同的應用程序?請詳細說明。 – 2010-10-31 13:22:07

回答

1

據我所知,你不能單獨使用PHP來做到這一點。不過,如果你在服務器上執行exec()權,你也許可以使用:

arp -a ipaddress 

ipaddress是你的局域網上的計算機的IP地址。你需要使用類似regex的東西來分離輸出的其餘部分的MAC地址。

+0

我必須通過局域網或單個PC保持pc的每個性能。我猜測「http」頭保持所有的每個pc區分。如果我解析「http」,那麼我可能知道哪些正在訪問我的程序。這是正確的嗎 ? – 2010-10-31 13:30:21

+1

計算機的MAC地址是特定於計算機的網卡,而IP地址不是。您可以通過比較其MAC地址來區分一臺機器和另一臺機器。除非我錯誤理解你的問題,否則我認爲你不需要進入HTTP頭部領域(因爲ping和ARP請求不涉及HTTP頭部)。 HTTP標題不包含MAC地址。 – 2010-10-31 14:12:20

0

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); 
    } 

?> 
+0

一些相關的文件不像Pear.php那樣。 – 2010-10-31 13:40:34

+0

我相信它的操作系統是依賴的,請檢查梨文檔http://pear.php.net/manual/ – Sudantha 2010-10-31 13:42:55

1

我不認爲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 ...你沒有。

相關問題