2012-12-12 58 views
0

我即將開始開發一個簡單的內部Web應用程序來將訪問者記錄到我的辦公室。基本上,他們會讀取AUP,然後輸入他們的名字來表示確認。該應用程序還將使用Request.UserHostAddress()記錄訪問者的IP。除了記錄IP之外,我還想運行一個腳本來使用從應用程序獲得的IP進行DHCP預留,但我還需要有MAC地址。這個應用程序只能在一個子網內使用,而且我打算爲訪問者使用一個小的DHCP範圍。在ASP.NET中是否有內置函數來解析IP地址的MAC地址

是否有任何內置函數可用於通過ARP解析IP地址的MAC地址?如果存在現有功能,我不希望使用解決方法。


好,以供參考,這是我做的:

Private Function get_MAC(ByVal ip As String) As String 
    Dim proc As New System.Diagnostics.Process 
    Try 
     proc.StartInfo.UseShellExecute = False 
     proc.StartInfo.RedirectStandardOutput = True 
     proc.StartInfo.CreateNoWindow = True 
     proc.StartInfo.FileName = Environment.ExpandEnvironmentVariables("%WINDIR%\system32\ping.exe") 
     proc.StartInfo.Arguments = ip 
     proc.Start() 
     proc.StartInfo.Arguments = "-a " & ip 
     proc.StartInfo.FileName = Environment.ExpandEnvironmentVariables("%WINDIR%\system32\arp.exe") 
     proc.Start() 
     Dim output As String = proc.StandardOutput.ReadToEnd 
     Dim rgx As New Regex("\w{2}-\w{2}-\w{2}-\w{2}-\w{2}-\w{2}") 
     If rgx.IsMatch(output) Then 
      Return rgx.Match(output).Value 
     Else 
      Return "ERROR No MAC address found." 
     End If 
    Catch ex As Exception 
     Return "ERROR " & ex.Message 
    End Try 
End Function 

然後,我

get_MAC(Request.UserHostAddress()) 

請注意,這只是工作,因爲Web服務器是保證把它稱爲在與主機相同的子網中。另外,如果您決定使用Visual Web Developer進行測試,請注意測試服務器將返回UserHostAddress as :: 1(IPv6回送地址)。

但回到主要問題:有沒有其他方法可以做到這一點?

+0

您可以分析'ARP -a'命令的輸出 「如何使用C#檢索DHCP服務器的IP和MAC地址」? –

+1

我懷疑asp.net會這樣做,因爲MAC很少適用於Web服務器。主要的.NET BCL可能或Windows命令行。 –

+0

@ssg是的,我想這可能會有更好的解決方案。哦:( – Seyren

回答