也许这个问题有点笨.但是我真的试了很多次没有成功.我试过的方法有:
1: /// <summary>
        /// 根据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;
            }
        }        /// <summary>
        /// 是否能 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;
        }2:Request.UserHostName属性.3:        /// <summary>
        /// 远程主机的名称
        /// </summary>
        /// <returns></returns>
        public static string GetRemoteHostName()
        {
            return HttpContext.Current.Request.ServerVariables["REMOTE_HOST"];
        }
都没有得到,好的结果也只是得到了IP地址,并且,如果电脑有防火墙,禁止了Ping的话,第一种方法反回的是空.请各位高手帮我分析一下原因,是我的测试环境问题,还是有其它问题.谢谢.

解决方案 »

  1.   

    客户端的东西可不是随便就能得到的压
    不然不就成了病毒了吗?而且客户端都是脚本的东西,像这些东西有的时候都是被禁止的
    当然activeX是可以实现的,或者用wscript去写,去调用shell
      

  2.   

    客户端的东西可不是随便就能得到的压   
    不然不就成了病毒了吗?而且客户端都是脚本的东西,像activeX这些东西有的时候都是被禁止的   
    当然activeX是可以实现的,或者用wscript去写,去调用shell
      

  3.   

    在.NET中获取一台电脑名,IP地址及当前用户名是非常简单,以下是我常用的几种方法,如果大家还有其它好的方法,可以回复一起整理: 
       
        1. 在ASP.NET中专用属性: 
        获取服务器电脑名:Page.Server.ManchineName 
        获取用户信息:Page.User 
        获取客户端电脑名:Page.Request.UserHostName 
        获取客户端电脑IP:Page.Request.UserHostAddress 
       
        2. 在网络编程中的通用方法: 
        获取当前电脑名:static System.Net.Dns.GetHostName() 
        根据电脑名取出全部IP地址:static System.Net.Dns.Resolve(电脑名).AddressList 
        也可根据IP地址取出电脑名:static System.Net.Dns.Resolve(IP地址).HostName 
       
        3. 系统环境类的通用属性: 
        当前电脑名:static System.Environment.MachineName 
        当前电脑所属网域:static System.Environment.UserDomainName 
        当前电脑用户:static System.Environment.UserName 
       
      

  4.   

    获取服务器电脑名:Page.Server.ManchineName   
          获取服务器电脑名:Page.Server.ManchineName  
          获取用户信息:Page.User  
          获取客户端电脑名:Page.Request.UserHostName  
          获取客户端电脑IP:Page.Request.UserHostAddress 
          获取当前电脑名:static   System.Net.Dns.GetHostName()  
          根据电脑名取出全部IP地址:static   System.Net.Dns.Resolve(电脑名).AddressList  
          也可根据IP地址取出电脑名:static   System.Net.Dns.Resolve(IP地址).HostName  
          当前电脑名:static   System.Environment.MachineName  
          当前电脑所属网域:static   System.Environment.UserDomainName  
          当前电脑用户:static   System.Environment.UserName  
      

  5.   

    客户端电脑名一般要用wmi来取。
    如果客户端不能用DNS来解析的话,那么根据客户端的IP也是无法获取客户端的主机名的
      

  6.   


    偶也想知道不用ActiveX能不能得到。