局域网电脑掉线检测c#编程问题
单位有一个几十台电脑的封闭局域网络,win2000操作系统。个别电脑偶尔掉线,如果一台电脑做服务端,监测哪台电脑掉线,其他电脑不做任何变动,如何入手C#编程?我接触Socket比较少,从何入手啊?   高手帮忙! 
 ping可以吗?是否效率太低啊?侦听网络上的数据包可以吗?能否从服务端与每台电脑建立连接通路?有朋友说:“UDP   发数据   出错   说明无法连接”。哪种方案好啊?关键的c#代码能示例一些吗?   
------解决方案--------------------关注 
 帮顶一下
------解决方案--------------------让服务端向全网发出广播,客户端在收到广播后回复信息,如果哪台机器没有回复说明它掉线了!   
 或者让客户端定时向服务器发出信息,如果服务器在指定的时间内没有收到信息,就判定这台机器掉线!
------解决方案--------------------对这方面不是很懂,只能帮顶了
------解决方案--------------------可以像arp那样~ 
 或者说是每格段时间ping一次 
 用TCP异步检测~
------解决方案--------------------关注,帮顶了............
------解决方案--------------------试试,这个呢?   
 using System.Threading;   //线程命名空间  
 using System.Net;  //网络命名空间  
 //思想为获取IP地址的主机名与信息.如发生异常,则说明主机不可到达(关机)    
 private void scan()  
         {  
             listView1.Items.Clear();  
             ListViewItem listviewitem; //清空listView1的项  
             string strIPaddress = numericUpDown1.Text +  ". " + numericUpDown2.Text +  ". " + numericUpDown3.Text +  ". ";  //或取前24位的IP地址  
             int start = Int32.Parse(numericUpDown4.Text);  
             int end = Int32.Parse(numericUpDown5.Text);  
             if (start >  end)  
                 MessageBox.Show( "终止地止必须大于启始地址 ",  "警告 "); //比较开始地址与接束地址,不允许终止地止必须小于启始地址  
             else  
             {  
                 for (int i = start; i  < end; i++)  
                 {  
                     string strscanip = strIPaddress + i.ToString();//构造IP地址  
                     IPAddress sacanip = IPAddress.Parse(strscanip);//转换成IP地址                         
                     listviewitem = new ListViewItem(strscanip, 0);//在ListViewItem添加IP地址  
                     try  
                     {  
                         IPHostEntry hostinfo = Dns.GetHostByAddress(sacanip); //根据ip地址或取主机的DNS信息  
                         string hostname = hostinfo.HostName.ToString(); //或取主机名                           
                         listviewitem.SubItems.Add(hostname); //在ListViewItem添加主机名  
                         listviewitem.SubItems.Add( "可到达 ");  
                     }  
                     catch (Exception ew)  
                     {  
                         listviewitem.SubItems.Add( "未知 ");  
                         listviewitem.SubItems.Add( "不可到达 ");  
                     }  
                     listView1.Items.Add(listviewitem); //将项加入listView1  
                 }  
             }  
         }  
------解决方案--------------------mark