既然ping可以满足你的要求,你就使用ping吧。:)

解决方案 »

  1.   

    ms-help://MS.VSCC/MS.MSDNVS.2052/cpref/html/frlrfsystemnethttpwebrequestclasstimeouttopic.htm获取或设置请求的超时值。
    [Serializable]
    public override int Timeout {get; set;}
    属性值
    请求超时前等待的毫秒数。备注
    Timeout 是用 GetResponse 方法生成的同步请求等待响应以及 GetRequestStream 方法等待流的毫秒数。如果资源在超时期限内未响应,请求将引发 WebException,并将 Status 属性设置为 WebExceptionStatus.Timeout。Timeout 属性对用 GetResponse 或 BeginGetRequestStream 方法生成的异步请求无效。
      

  2.   

    可以借助HttpWebRequest的WebException异常来获得网络状态
    代码如下:
    private void button2_Click(object sender, System.EventArgs e)

     
    try
    {
    HttpWebRequest HttpWReq = (HttpWebRequest)WebRequest.Create("http://www.netbee5.com");
    HttpWebResponse HttpWResp = (HttpWebResponse)HttpWReq.GetResponse();
    }catch(WebException error)
    {
    MessageBox.Show(error.Message.ToString());
    }
    }
      

  3.   

    我尝试了一下,用Dns.GetHostByName("www.csdn.net")异常速度比较快,用了15秒
    如果用WebException异常的话需要1分半钟多,似乎设置超时时间也没有用
    用TcpClient连接的话如果不知道IP地址也必须用Dns.GetHostByName("www.csdn.net")先得到IP地址,如果知道IP地址的话速度稍微快点.
    但是都不能达到PING程序的效果,希望大家继续关注.
      

  4.   

    HttpWebRequest大概可以达到目的
      

  5.   

    http://www.c-sharpcorner.com/network/ping.asp
      

  6.   

    看来在不知道具体IP地址的时候还是用DNS.GetHostByName(host);是最快的,
    楼上斑竹给的那个方法也是这样用,
    如果知道了具体的IP地址那就用SOCKET效果应该最好.
    结贴.