本人现在开发的项目需要定时的检查网络的状况。
不知道各位大侠有没有好的办法?我是用c#实现ICMP协议,模拟ping命令来检查网络的,使用到了这些资源:
http://www.codeproject.com/dotnet/CSharpPing.asp
http://www.eggheadcafe.com/articles/20020209.asp这些实现的ping程序好像在对指定远程服务器的端口测试中没有用,
也就是说无法判断服务器指定的端口是否打开。不知道高手对这种情况有没有好的解决办法?谢谢

解决方案 »

  1.   

    public static bool Ping(string remoteHost)
    {
    bool Flag = false;
    Process proc = new Process();
    try
    {
    proc.StartInfo.FileName = "cmd.exe";
    proc.StartInfo.UseShellExecute = false;
    proc.StartInfo.RedirectStandardInput = true;
    proc.StartInfo.RedirectStandardOutput = true;
    proc.StartInfo.RedirectStandardError = true;
    proc.StartInfo.CreateNoWindow = true;
    proc.Start();
    string dosLine = @"ping -n 1 " + remoteHost;
    proc.StandardInput.WriteLine(dosLine);
    proc.StandardInput.WriteLine("exit");
    while (proc.HasExited == false)
    {
    proc.WaitForExit(500);
    }
    string pingResult = proc.StandardOutput.ReadToEnd();
    if (pingResult.IndexOf("(0% loss)") != -1)
    {
    Flag = true;
    }
    proc.StandardOutput.Close() ;
    }
    catch (Exception ex)
    {
    }
    finally
    {
    try
    {
    proc.Close();
    proc.Dispose();
    }
    catch
    {
    }
    }
    return Flag;
    }
      

  2.   

    上面的大哥,我现在是要用检测服务器的一个具体的端口有没有打开,比如8080端口ping命令可以检测端口吗?好像不能吧