日期:2014-05-19  浏览次数:20869 次

局域网电脑掉线检测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