我的软件通过WEB SERVICE访问另外一个网络上的网站取得数据,当另一个网站有异常时,我的软件也出现错误。
请问:c# 如何检测是否能连通某个网站?

解决方案 »

  1.   

    服务端用socket或tcpclient连接目标网站,默认的端口是80,
    public bool checkService()
    {
    using (System.Net.Sockets.TcpClient tcpSocket = new System.Net.Sockets.TcpClient())
                    {
                        AsyncCallback ConnectCallback = null;
                        IAsyncResult async = tcpSocket.BeginConnect("www.baidu.com", 80, ConnectCallback, null);
                        DateTime startTime = DateTime.Now;
                        do
                        {
                            System.Threading.Thread.Sleep(100);
                            if (async.IsCompleted) break;
                        }
                        while (DateTime.Now.Subtract(startTime).TotalSeconds < 8);//8代表超时的时间,
                        if (async.IsCompleted)
                        {
                            tcpSocket.EndConnect(async);
                            tcpSocket.Close();
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
    }
    自己再加上try catch 就可以了 
      

  2.   

    可以把超时调的小一点,如2秒,返回true为可以连接,false为不能连接。
      

  3.   

            /// <summary>
            /// 测试指定IP是否能够连接
            /// </summary>
            /// <param name="ip"></param>
            /// <returns></returns>
            public static bool TestConnect(string ip)
            {
                bool result = false;
                IPAddress ipAddress;
                if (IPAddress.TryParse(ip, out ipAddress))
                {
                    using (Ping ping = new Ping())
                    {
                        if (ping.Send(ipAddress, 1000).Status == IPStatus.Success)
                        {
                            result = true;
                        }
                    }
                }
                return result;
            }
      

  4.   

    加上using System.Net;
    using System.Net.NetworkInformation;