各位高手
我这样 System.Net.IPAddress ip = System.Net.IPAddress.Parse(Request.UserHostAddress);
        System.Net.IPHostEntry ihe = System.Net.Dns.GetHostEntry(ip);
        //机器名
        string clientname = ihe.HostName;
        Response.Write(clientname + "<br>");
        Response.Write(System.Environment.MachineName+"<br>");
        Response.Write(System.Net.Dns.GetHostName());
怎么只能获取局域网内的计算机名呢
我想获取网络上的计算机名该怎么做啊?
先谢谢各位了!

解决方案 »

  1.   

    Page.Server.ManchineName
    试试看!应该可以
      

  2.   

    不知道楼主想要获取的是 客户端的计算机名还是服务器端的
    如果是服务器端的很容易:Server.MachineName;客户端就比较麻烦。参考这个参考
      

  3.   

    服务端的:Server.MachineName;
    客户端的 :Page.Request.UserHostName ;
            :HttpContext.Current.Request.LogonUserIdentity.Name ;
      

  4.   

    #Include winsock2.h
    CString strTemp;
    struct hostent *host;
    struct in_addr *ptr; // 获取IP地址的结构
    DWORD dwScope = RESOURCE_CONTEXT;
    NETRESOURCE *NetResource = NULL;
    HANDLE hEnum;
    WNetOpenEnum( dwScope, NULL, NULL, NULL, &hEnum );
    WSADATA wsaData;
    WSAStartup(MAKEWORD(1,1),&wsaData);
    if ( hEnum )
    {
    DWORD Count = 0xFFFFFFFF;
    DWORD BufferSize = 2048;
    LPVOID Buffer = new char[2048];
    WNetEnumResource( hEnum, &Count, Buffer, &BufferSize );
    NetResource = (NETRESOURCE*)Buffer;
    char szHostName[200];
    for ( unsigned int i = 0; i < BufferSize/sizeof(NETRESOURCE);
    i++, NetResource++ )
    {
    if ( NetResource->dwUsage == RESOURCEUSAGE_CONTAINER &&
    NetResource->dwType == RESOURCETYPE_ANY )
    {
    if ( NetResource->lpRemoteName )
    {
    CString strFullName = NetResource->lpRemoteName;
    if ( 0 == strFullName.Left(2).Compare("\\\\") )
    strFullName = strFullName.Right(strFullName.GetLength()-2);
    gethostname( szHostName, strlen( szHostName ) );
    host = gethostbyname(strFullName);
    if(host == NULL) continue;
    ptr = (struct in_addr *) host->h_addr_list[0];
    // 211.40.35.76 分割成如下形式.
    int a = ptr->S_un.S_un_b.s_b1; // 211
    int b = ptr->S_un.S_un_b.s_b2; // 40
    int c = ptr->S_un.S_un_b.s_b3; // 35
    int d = ptr->S_un.S_un_b.s_b4; // 76
    strTemp.Format("%s --> %d.%d.%d.%d",strFullName,a,b,c,d);
    AfxMessageBox(strTemp);
    }
    }
    }
    delete Buffer;
    WNetCloseEnum( hEnum );
    }
    WSACleanup();
      

  5.   

    兄弟,我前面是想知道。
    最後我知道了。好後悔。
    。NET只能得到客戶端的IP
    要用JS才能得到COMPUTERNAME
    如果客戶端關了JS那就永遠也得不到了。
      

  6.   

    谢谢
    这个在局域网内是没问题的
    但在internet上每台机子访问时都是显示 VHOST415
      

  7.   

    1. 在asp.net中专用属性:获取服务器计算机名: page.server.manchinename获取用户信息: page.user获取客户端计算机名:page.request.userhostname获取客户端计算机ip: page.request.userhostaddress2. 在网络编程中的通用方法:获取当前计算机名: static system.net.dns.gethostname()根据计算机名取出全部ip地址: static system.net.dns.resolve(计算机名).addresslist也可根据ip地址取出计算机名: static system.net.dns.resolve(ip地址).hostname3. 系统环境类的通用属性:当前计算机名: static system.environment.machinename当前计算机所属网域: static system.environment.userdomainname当前计算机用户: static system.environment.username 
      

  8.   

    这里的我也都试了
    在局域网内是正确的 
    但在internet上得到的结果却总是 VHOST415
     
      

  9.   

    我也只知道Server
    你去网上查啦
      

  10.   

    获取客户端计算机名称,可用activex控件
    var   wsh=new   ActiveXObject("WScript.Network");   
    alert(wsh.ComputerName);
      

  11.   

    我用这个在本地的时候可以
    但上传到网络上后 一打开那个页面就报错
    http://baocheng.webdt.net/3.html
    什么服务器不能创建对象
    请问该怎么解决啊