1

ネットワーク内のさまざまな IP に対して ping を実行する状況があります。次に、成功した ping に接続しようとします。

私の目的は、特定の MAC プレフィックスを持つ特定の機器に接続することです。たとえば、100 の範囲の IP に対して ping を実行すると、20 の応答が返されることがあります。これらの応答には、コンピューター、プリンター、およびおそらく接続しようとしているハードウェアが含まれます。

現在、必要なハードウェア (コンピューター、プリンターなど) 以外に接続しようとすると、タイムアウト接続が発生します。

これは問題ありませんが、効率的ではありません。MAC アドレスを使用して成功した ping リストを除外したいのですが、ハードウェアを接続する前に MAC アドレスを検索できるソリューションをまだ見つけられていません。

ここで MAC に関するほとんどの質問に目を通しましたが、私のニーズに合うものはありませんでした。

何か案は??

4

1 に答える 1

4

ここで解決策を見つけることができました: http://pinvoke.net/default.aspx/iphlpapi/SendARP.html

次のメソッドは MAC を返します

internal static string GetMAC(string ip)
    {
        IPAddress dst = IPAddress.Parse(ip); // the destination IP address Note:Can Someone give the code to get the IP address of the server

        byte[] macAddr = new byte[6];
        uint macAddrLen = (uint)macAddr.Length;
        if (SendARP((int)dst.Address, 0, macAddr, ref macAddrLen) != 0)
            throw new InvalidOperationException("SendARP failed.");

        string[] str = new string[(int)macAddrLen];
        for (int i = 0; i < macAddrLen; i++)
            str[i] = macAddr[i].ToString("x2");
        return string.Join(":", str);
        //Console.WriteLine(string.Join(":", str));
    }
于 2010-06-29T15:24:58.413 に答える