【问题标题】:Is there a built-in function in ASP.NET to resolve a MAC address from an IP addressASP.NET 中是否有从 IP 地址解析 MAC 地址的内置函数
【发布时间】:2012-12-12 08:44:54
【问题描述】:

我即将开始开发一个简单的内部网络应用程序来记录我办公室的访客。基本上,他们将阅读 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 环回地址)。

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

【问题讨论】:

  • 可以解析arp -a命令的输出吗?
  • 我怀疑 asp.net 会这样,因为 MAC 很少适用于 Web 服务器。主 .NET BCL 可能,或 windows 命令行。
  • @ssg 是的,我在想可能有更好的解决方案。哦,好吧:(

标签: c# asp.net vb.net mac-address arp


【解决方案1】:

【讨论】:

  • 正在寻找一种无需运行外部程序的方法。不过感谢您的努力=)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-14
  • 2020-05-23
  • 1970-01-01
  • 2018-04-01
  • 1970-01-01
相关资源
最近更新 更多