0

オフィスへの訪問者を記録するための簡単な内部 Web アプリケーションの開発を開始しようとしています。基本的に、彼らは AUP を読んでから、承認を示すために名前を入力します。アプリケーションは、Request.UserHostAddress() を使用して訪問者の IP も記録します。IP をログに記録するだけでなく、スクリプトを実行して、アプリケーションから取得した IP で DHCP を予約したいのですが、MAC アドレスも必要です。このアプリケーションは 1 つのサブネット内でのみ使用されます。訪問者には小さな 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 に答える