0

我即将开始开发一个简单的内部 Web 应用程序来记录我办公室的访客。基本上,他们将阅读 AUP,然后输入他们的姓名以表示确认。该应用程序还将使用 Request.UserHostAddress() 记录访问者的 IP。除了记录 IP 之外,我还想运行一个脚本来使用从应用程序获得的 IP 进行 DHCP 保留,但我还需要拥有 MAC 地址。这个应用程序只能在一个子网中使用,我计划为访问者使用一个小的 DHCP 范围。

我可以使用任何内置功能通过 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 作为 ::1(IPv6 环回地址)。

但回到主要问题:还有其他方法吗?

4

1 回答 1

0

http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/3435b288-a48f-46cc-b247-0f4c3deb5f89/

“如何使用 C# 从 DHCP 服务器检索 IP 和 MAC 地址”

于 2012-12-12T08:56:55.887 回答