C#怎么得到局域网内所有计算机的名字啊??

解决方案 »

  1.   

    具体情况是这样的,就是我一个windowsFrom程序连接服务器的时候,用户选择默认服务器登陆时,就会自动地在局域网内搜索指定的数据库服务器进行连接....
      

  2.   

    SQLDMO即可??那是取得的是数据库服务器的列表吧,我要的是怎么得到局域网内所有计算机的名字啊
      

  3.   

    调用 ping 命令。一个IP一个IP的 ping 然后取返回的机器名。很愚的办法。^-^
      

  4.   

    private void ScanTarget() 
            { 
                string strIPAddress="192.168.1."; 
                //Start scan address 
                int nStrat = Int32.Parse("1"); 
                //Finish scan address 
                int nEnd =Int32.Parse("255"); 
                //scan operation 
                for(int i=nStrat;i<=nEnd;i++) 
                { 
                    string strScanIPAdd = strIPAddress +i.ToString(); 
                    //convert to ip address 
                    IPAddress myScanIP = IPAddress.Parse(strScanIPAdd); 
                    try 
                    { 
                        //get dns information 
                        IPHostEntry myScanHost = Dns.GetHostByAddress(myScanIP); 
                        //get host name 
                        string strHostName =myScanHost.HostName.ToString(); 
                        this.listBox2.Items.Add(strScanIPAdd+"->"+strHostName+"\r"); 
                    } 
                    catch 
                    { 
                        continue; 
                    } 
                     
                }//for     
                MessageBox.Show("ok"); 
            }
      

  5.   

    SQLDMO即可??那是取得的是数据库服务器的列表吧,我要的是怎么得到局域网内所有计算机的名字啊
      
     __________________________________你都得到了数据库服务器的列表? 还不能让用户连接到相应服务器? ok 你的要求是查看数据库服务器所在的机子的名字? 我理解错误.
      

  6.   

    回楼上的??IPAddress要引用哪个名称空间啊
      

  7.   

    参看
    http://topic.csdn.net/t/20030506/11/1744771.html你可以单开线程去遍历。
      

  8.   

    http://www.codeproject.com/cs/database/SubmitSQLInfoEnumerator.asp
    这里有你要的东东
      

  9.   

    我曾经用循环的写着玩过呵呵如果觉得界面线程像死锁一样不动有点难看的话,你可以
    1.开个线程去做。
    2.每个循环里加上System.Windows.Forms.Application.DoEvents();
      

  10.   

    to www_123du_com(鼠·神·泪)(www.123du.com)  
    可以看看你的代码么?
      

  11.   

    开几十个线程?怎么开啊,我是刚工作2个月的,需要帮下忙,比如:
    public void loginF()
    {
      //初始下
      string strIPAddress="192.168.1."; 
      //从1开始遍历
      int nStrat = Int32.Parse("1"); 
      //到255时结束..
      int nEnd =Int32.Parse("255"); 
      try
      {
       (int i=nStrat;i<=nEnd;i++) 
       { 
       try
       {
         string strScanIPAdd = strIPAddress +i.ToString(); 
          //下面是连接服务器的代码,strScanIPAdd 为连接参数,,,
        }
      }
    //登陆按钮.........
    private void button1_Click(object sender, System.EventArgs e)
    {
     System.Threading.Thread thread=new System.Threading.Thread(new System.Threading.ThreadStart(loginF));
    thread1.Start();

    开很多个我该怎么去写啊
      

  12.   

    帮你写点多线程伪代码,你给我多送点分,好吧?当然,你要注意分配线程的多少问题,或者你可以让一个线程查多次。需要你自己改改。private void button1_Click(object sender, System.EventArgs e)
    {
    for (int i=1; i<=255; i++)
    {
    //线程池
    System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback("192.168.1."+i));
    }
    }
    private void ThreadRun(object ip)
    {
    //查此IP
    }
    或者
    private void button1_Click(object sender, System.EventArgs e)
    {
    for (int i=1; i<=255; i++)
    {
    //系统线程池
    System.Threading.Thread thread = new Thread(new System.Threading.ThreadStart(new My("192.168.1."+i).ThreadRun));
    }
    }
    internal class My
    {
    private string IP;
    public My(string ip)
    {
    this.IP = ip;
    }
    public void ThreadRun()
    {
    //查此IP
    }
    }
      

  13.   

    注释有误
    //系统线程池-->这个不是线程池
    System.Threading.Thread thread = new Thread(new System.Threading.ThreadStart(new My("192.168.1."+i).ThreadRun));
      

  14.   

    ThreadRun()里面的方法没有执行啊,进不了,就一直在for (int i=1; i<=255; i++)里跳,可能要跳到255的时候,那怎么办,还是线程吗?
      

  15.   

    顶!!!_________________________________________________________________________________
    买域名送空间,买空间送域名,国际顶级域名(.com  .net .org .cn)只需要50元/年,100M ASP.NET空间(支持1.1,2.0)仅需50元............详情请登陆:www.kingtoo.com