现在的位置: 首页 > 综合 > 正文

调用第三方程序Ping同局域网计算机和得到其Mac

2011年04月03日 ⁄ 综合 ⁄ 共 1900字 ⁄ 字号 评论关闭

调用Ping命令获取网络连接情况:

<%@import namespace="System.Diagnostics"%>

private void Submit_Click(Object sender, EventArgs e)
{
 for(int i=0;i<100;i++){
   Response.Write(CmdPing("172.20.185.210")+"<br>");
   Response.Write(CmdPing("172.20.185.254")+"<br>");
 }
}

private string CmdPing(string strIp)
{
  //实例Process类,启动独立进程.
  Process pro=new Process();
  //设定程序名
  pro.StartInfo.FileName="cmd.exe"; 

  pro.StartInfo.UseShellExecute=false; 
  pro.StartInfo.RedirectStandardInput=true; 
  pro.StartInfo.RedirectStandardOutput=true; 
  pro.StartInfo.RedirectStandardError=true;

//启动进程
pro.Start();
//输入要执行命令
pro.StandardInput.WriteLine("ping -n 1 "+strIp);
pro.StandardInput.WriteLine("exit");
//从输出流获取执行结果(从流当前位置读到流末尾)
string temp=pro.StandardOutput.ReadToEnd();

//分析各种情况
string result;

//字串中含有"(0% loss)"字串
if(temp.IndexOf("(0% loss)")!=-1)
      result="能连接!!";
else if(temp.IndexOf("Destination host unreachable.")!=-1)
      result="无法到达目的主机";
else if(temp.IndexOf("Request timed out.")!=-1)
      result="超时";
else if(temp.IndexOf("Unknown host")!=-1)
      result="无法解析主机";
else
  result=temp;

//释放资源,返回数据.
pro.Close();
return result;
}

得到本机或别机Mac:
//Process类位于System.Diagnostics名称空间.

<%@import namespace="System.Diagnostics"%>

<asp:button Text="Submit" OnClick="Submit_Click" runat="server"/>
private void Submit_Click(Object obj,EventArgs e){
  Response.Write(GetMac("172.20.177.18"));
}

private string GetMac(string IP)
{
  try{
    //将使用Process类Start方法启动新程序
    Process pro=new Process();

    //指定启动进程时使用的一组值
    pro.StartInfo.FileName="nbtstat"; //启动程序名
    pro.StartInfo.Arguments="-a "+IP; //传递参数

    pro.StartInfo.UseShellExecute=false;
    pro.StartInfo.RedirectStandardInput=false; 
    pro.StartInfo.RedirectStandardOutput=true; 
    pro.Start();

    string line="";
    //如果含有"mac address",则跳出循环.
    while(line.IndexOf("mac address",0)<0){
       line=pro.StandardOutput.ReadLine(); //读取一行输出.
       line=line.Trim().ToLower(); //去除空格并小写.
    }
    pro.WaitForExit();//无限期地等待关联进程退出
    return line;
  }
  catch(Exception err){
    return err.Message;
  }
}

抱歉!评论已关闭.