3

システム(Webアプリケーション)にログインしたユーザーのIPアドレスとMACアドレスを取得したい。これらをコード行に使用しています

    NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();

この方法を使用して MAC アドレスを取得していますが、問題は、コンピューターのすべてのアダプターの MAC アドレスを取得していることです。

どれが正しいかを知るにはどうすればよいですか?, 自分の Web サイトに接続されているデバイスの正しい MAC アドレスを取得する方法は??

また、アダプターのIPを取得する方法も。

私のPCで試してみると、8つのMACアドレスを持つ8つのアダプターが表示されます

私は自分の PC で試しています。イントラネットに接続された有線接続と、インターネットに接続されたワイヤレスがあります。

4

6 に答える 6

4

Web サイトに接続しているユーザーの MAC アドレスを取得することはできません。送信先 (Web サイトのサーバー) と送信元 (クライアントのコンピューター) の間でソケット接続が発生した場合、送信元 IP アドレスのみを取得できます。MAC アドレスについては取得できません。ユーザーの IP アドレスを取得するために、ソケット接続 (クライアント <--> サーバー) を介して送信されます。

using System.Net;

Private string GetIP()
{
string strHostName = "";
strHostName = System.Net.Dns.GetHostName();

IPHostEntry ipEntry = System.Net.Dns.GetHostEntry(strHostName);

IPAddress[] addr = ipEntry.AddressList;

return addr[addr.Length-1].ToString();

}

出典:こちら

于 2012-04-29T13:24:33.740 に答える
1
using System.Runtime.InteropServices;

[DllImport("Iphlpapi.dll")]
private static extern int SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length);

[DllImport("Ws2_32.dll")]
private static extern Int32 inet_addr(string ip);

private static string GetClientMAC(string strClientIP) {
    string mac_dest = "";
    try {
        Int32 ldest = inet_addr(strClientIP);
        Int32 lhost = inet_addr("");
        Int64 macinfo = new Int64();
        Int32 len = 6;
        int res = SendARP(ldest, 0, ref macinfo, ref len);
        string mac_src = macinfo.ToString("X");

        while (mac_src.Length < 12) {
            mac_src = mac_src.Insert(0, "0");
        }

        for (int i = 0; i < 11; i++) {
            if (0 == (i % 2)) {
                if (i == 10) {
                    mac_dest = mac_dest.Insert(0, mac_src.Substring(i, 2));
                } else {
                    mac_dest = "-" + mac_dest.Insert(0, mac_src.Substring(i, 2));
                }
            }
        }
    } catch (Exception err) {
        throw new Exception("Lỗi " + err.Message);
    }
    return mac_dest;
}

このコードはあなたを助けるでしょう:)

于 2017-09-21T03:55:43.940 に答える
-3

まず、Mac アドレスが UNIQUE ではないため、クライアント (ユーザー) の MAC アドレスが必要な理由を知っておくとよいでしょう。

.NET Framework を使用して SERVER 接続を取得することしかできず、ユーザー自体を取得することはできません。そのため、クライアントの MAC アドレスを取得するには、javascript と ActiveX コントロールのみに依存できます。魔女は Firefox として Internet Explorer でのみ使用できます。数年前に ActiveX コントロールのサポートを廃止しました。

これについては、こちらの記事をご覧ください。

于 2012-04-29T13:34:48.790 に答える