多线程测试网络情况,不同网段的机器用nbtstat判断是否开机
2009-07-27 08:31
281 查看
using System; using System.Collections.Generic; using System.Text; using System.Threading; using System.Net.NetworkInformation; using System.Diagnostics; using System.Net; using System.Runtime.InteropServices; namespace 线程 { class Program { static void Main(string[] args) { for (int i = 1; i <=254; i++) { Work w = new Work(); w.IP ="192.168.1."+i.ToString(); Thread t = new Thread(new ThreadStart(w.main)); t.Start(); Thread.Sleep(1000); } Console.ReadLine(); } } public class Work { [DllImport("Iphlpapi.dll")] private static extern int SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length); [DllImport("Ws2_32.dll")] private static extern Int32 inet_addr(string ip); public string count ; public int i = 0; public string IP; public void main() { //实现ping功能 Ping pingSender = new Ping(); PingReply reply =pingSender.Send(IP); if (reply.Status == IPStatus.Success) { long RoundtripTime = reply.RoundtripTime; if(IP==reply.Address.ToString()) { Console.Write(IP + "可以ping通,延时"+reply.RoundtripTime.ToString()); } if (RoundtripTime > 10) { Console.Write("延时过大,时间为"+RoundtripTime.ToString()); } Console.WriteLine(); } else//利用netbios协议,用命令nbtstat判断客户端是否在线,尤其用于不同网段无法ping通的机器 { string s = GetNetCardAddress(IP); if ("".Equals(s)) { Console.WriteLine(IP + "不通"); } else { Console.WriteLine(IP + "通,MAC为" + s); } } } //获取远程主机mac地址 public string GetNetCardAddress(string strIp) { string mac = ""; System.Diagnostics.Process process = new System.Diagnostics.Process(); process.StartInfo.FileName = "nbtstat"; process.StartInfo.Arguments = " -a " + strIp; process.StartInfo.UseShellExecute = false; process.StartInfo.CreateNoWindow = true; process.StartInfo.RedirectStandardOutput = true; process.Start(); string output = process.StandardOutput.ReadToEnd().Replace(" ", "").Replace("/n", ""); process.Close(); int length = output.IndexOf("MACAddress="); if (length > 0) { mac =output.Substring(length + 11, 17); } return mac; } } }
相关文章推荐
- 无废话Android之smartimageview使用、android多线程下载、显式意图激活另外一个activity,检查网络是否可用定位到网络的位置、隐式意图激活另外一个activity、隐式意图的配置,自定义隐式意图、在不同activity之间数据传递(5)
- C#使用Ping功能判断网络连接状态或者目标计算机是否开机等
- javaEE程序.设置在网络快慢,或者不稳定的情况下,测试程序是否有bug的方法!
- 判断一个点是否在矩形内PtInRegion-解决PtInRect不能正确判断不同形式TRent的情况
- 发布一款根据网络是否正确情况重启机器的软件
- Android检查设备是否可以访问互联网,判断Internet连接,测试网络请求,解析域名
- ios - 测试网络状态是否连通 判断网络状态类型
- nbtstat及netstat命令详解,查看对方IP机器名,查看网络通信情况……
- Android判断网络状态是否断开+Android完全关闭应用程序+ 本文讲述了Android中不同Activity之间的数据传递 — Bundle对象的实现(-)+Android中Bundle的使用示例
- 网络构建入门技术(4)——判断是否在同一网段
- c#中sqlite在不同机器上可能出现不能读取的情况
- 判断手机是否连接网络
- python 判断网络是否畅通
- c++实现ip是否在同一个网段的判断
- javascript判断机器是否联网的2种方法
- Android--用ping的方法判断当前网络是否可用
- 判断网络是否链接
- go 语言使用ssh包连接操作Linux服务器,使用ping包查看服务器网络是否正常,使用cron包定时查询该服务器CPU使用情况
- 判断一个整型数组是否包含另外一个数组(未使用异常类的情况下)
- 不同页面之间传值,通过checkbox来判断是否更新