你遇到过这种情况吗?你的防火墙报告局域网中的某个IP地址的电脑正在攻击你,但是防火墙没有提示发出攻击的电脑名称,到底谁的电脑在攻击呢(攻击你的电脑可能是中毒了)?有一天早上你刚刚上班,打开电脑后发现连接不了服务器,到服务器那里一看才知道,原来有人使用了服务器的IP地址,到底谁在使用服务器的IP地址呢?nslookup 可以实现域名(主机名)的反查IP地址。哈哈,但今天说的是用C#实现。

        /// 根据IP地址获得主机名称
        
/// </summary>
        
/// <param name="ip">主机的IP地址</param>
        
/// <returns>主机名称</returns>
        public string GetHostNameByIp(string ip)
        {
            ip 
= ip.Trim();
            
if (ip == string.Empty)
                
return string.Empty;
            
try
            {
                
// 是否 Ping 的通
                if (this.Ping(ip))
                {
                    System.Net.IPHostEntry host 
= System.Net.Dns.GetHostEntry(ip);
                    
return host.HostName;
                }
                
else
                    
return string.Empty;
            }
            
catch (Exception)
            {
                
return string.Empty;
            }
        }

 

 


        /// 是否能 Ping 通指定的主机
        
/// </summary>
        
/// <param name="ip">ip 地址或主机名或域名</param>
        
/// <returns>true 通,false 不通</returns>
        public bool Ping(string ip)
        {
            System.Net.NetworkInformation.Ping p 
= new System.Net.NetworkInformation.Ping();
            System.Net.NetworkInformation.PingOptions options 
= new System.Net.NetworkInformation.PingOptions();
            options.DontFragment 
= true;
            
string data = "Test Data!";
            
byte[] buffer = Encoding.ASCII.GetBytes(data);
            
int timeout = 1000// Timeout 时间,单位:毫秒
            System.Net.NetworkInformation.PingReply reply = p.Send(ip, timeout, buffer, options);
            
if (reply.Status == System.Net.NetworkInformation.IPStatus.Success)
                
return true;
            
else
                
return false;
        }

 


        /// 根据主机名(域名)获得主机的IP地址
        
/// </summary>
        
/// <param name="hostName">主机名或域名</param>
        
/// <example>GetIPByDomain("pc001"); GetIPByDomain("www.google.com");</example>
        
/// <returns>主机的IP地址</returns>
        public string GetIpByHostName(string hostName)
        {
            hostName 
= hostName.Trim();
            
if (hostName == string.Empty)
                
return string.Empty;
            
try
            {
                System.Net.IPHostEntry host 
= System.Net.Dns.GetHostEntry(hostName);
                
return host.AddressList.GetValue(0).ToString();
            }
            
catch (Exception)
            {
                
return string.Empty;
            }
        }

相关文章:

  • 2022-02-15
  • 2022-02-20
  • 2022-12-23
  • 2021-12-04
  • 2021-05-18
  • 2022-12-23
  • 2021-11-18
  • 2022-12-23
猜你喜欢
  • 2021-12-01
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案