这个问题很简单

我平时一般是这样处理的

 


               {
                    IPHostEntry myHost = Dns.GetHostByAddress(myIp);
                    HostName 
= myHost.HostName.ToString();

                }
                
catch
                {
                    HostName 
= "";

                }

 

但是这样有个问题,新系统使用环境为Vista Vista内置了防火墙 所以再这样获取主机的姓名了

于是采取了这样的方法,调用系统API获取MAC地址 若存在则确定主机存在:

 

 GetMac
    {
        [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);

        
public static string GetRemoteMac(string clientIP)
        {

            
string ip = clientIP;

            Int32 ldest 
= inet_addr(ip);

            Int64 macinfo 
= new Int64();

            Int32 len 
= 6;

            
try
            {

                SendARP(ldest, 
0ref macinfo, ref len);

            }

            
catch
            {

                
return "";

            }

            
string originalMACAddress = Convert.ToString(macinfo, 16);

            
if (originalMACAddress.Length < 12)
            {

                originalMACAddress 
= originalMACAddress.PadLeft(12'0');

            }

            
string macAddress;

            
if (originalMACAddress != "0000" && originalMACAddress.Length == 12)
            {

                
string mac1, mac2, mac3, mac4, mac5, mac6;

                mac1 
= originalMACAddress.Substring(102);

                mac2 
= originalMACAddress.Substring(82);

                mac3 
= originalMACAddress.Substring(62);

                mac4 
= originalMACAddress.Substring(42);

                mac5 
= originalMACAddress.Substring(22);

                mac6 
= originalMACAddress.Substring(02);

                macAddress 
= mac1 + "-" + mac2 + "-" + mac3 + "-" + mac4 + "-" + mac5 + "-" + mac6;

            }

            
else
            {

                macAddress 
= "";

            }

            
return macAddress.ToUpper();

        } 
    }

 

不知道大家有没有别的好点的方法呢?

相关文章:

  • 2021-06-14
  • 2021-09-26
  • 2021-09-23
  • 2021-06-26
  • 2022-01-17
  • 2022-01-25
  • 2021-09-11
  • 2021-11-19
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-05-19
  • 2022-12-23
  • 2021-07-14
  • 2021-12-17
相关资源
相似解决方案