C#判斷網絡鏈接狀態


using System.Net.NetworkInformation;
bool isLocalAreaConnected = NetworkInterface.GetIsNetworkAvailable();
           if (isLocalAreaConnected)
           {
               Common.MessageBox.ShowMes(this,"有鏈接");
           }
View Code
using System.IO;
using System.Runtime.InteropServices;//引入這兩個命名空間,不用引用wininet.dll
 
[DllImport("wininet.dll")]   
     private extern static bool InternetGetConnectedState(out int connectionDescription, int reservedValue);   
    //以及判斷網絡連接的函數:  
    private bool IsConnected()   
      {   
       
      int I = 0;   
       
      bool state = InternetGetConnectedState(out I, 0);   
       
      return state;   
       
      }

    protected void Button1_Click(object sender, EventArgs e)
    {
        if (IsConnected())
        {
            Label1.Text = "狀態:網絡暢通!";
        }
        else
        {
            Label1.Text = "狀態:與目標網絡無連接!";
        }  
    }
View Code
//這個方法有時不是那么好用,因為禁止ping域名是某些服務商防范黑客攻擊的一種手段
/// <summary>
    /// ping 具體的網址看能否ping通
    /// </summary>
    /// <param name="strNetAdd"></param>
    /// <returns></returns>
    private static bool PingNetAddress(string strNetAdd)
    {
        bool Flage = false;
        Ping ping = new Ping();
        try
        {
            PingReply pr = ping.Send(strNetAdd, 3000);
            if (pr.Status == IPStatus.TimedOut)
            {
                Flage = false;
            }
            if (pr.Status == IPStatus.Success)
            {
                Flage = true;
            }
            else
            {
                Flage = false;
            }
        }
        catch
        {
            Flage = false;
        }
        return Flage;
    }
View Code
判斷遠程有無此文件
 
using System.Net;
private bool RemoteFileExists(string fileUrl)
    {
        try
        {
            HttpWebRequest re = (HttpWebRequest)WebRequest.Create(fileUrl);
            HttpWebResponse res = (HttpWebResponse)re.GetResponse();
            if (res.ContentLength != 0)
            {
                return true;
                //MessageBox.Show("文件存在");  return true;               
            }
        }
        catch (Exception)
        {
            //Response.Write("不存在");
            return false;
        }
        return false;
    }
View Code
判斷遠程有無此文件
using System.Net;
    public static bool IsExist(string uri)
    {
        HttpWebRequest req = null;
        HttpWebResponse res = null;
        try
        {
            req = (HttpWebRequest)WebRequest.Create(uri);
            req.Method = "HEAD";
            req.Timeout = 100;
            res = (HttpWebResponse)req.GetResponse();
            return (res.StatusCode == HttpStatusCode.OK);
        }
        catch
        {
            return false;
        }
        finally
        {
            if (res != null)
            {
                res.Close();
                res = null;
            }
            if (req != null)
            {
                req.Abort();
                req = null;
            }
        }
    }
    //2:
    private bool UrlExistsUsingXmlHttp(string url)
    {
        //注意:此方法需要引用Msxml2.dll( 項目---添加引用--com---microsoft xml 2.6)
        MSXML2.XMLHTTP _xmlhttp = new MSXML2.XMLHTTPClass();
        _xmlhttp.open("HEAD", url, false, null, null);
        _xmlhttp.send("");
        return (_xmlhttp.status == 200);
    }
    //3:
    private bool UrlExistsUsingSockets(string url)
    {
        if (url.StartsWith("http://")) url = url.Remove(0, "http://".Length);
        try
        {
            System.Net.IPHostEntry ipHost = System.Net.Dns.GetHostEntry(url);// System.Net.Dns.Resolve(url);
            return true;
        }
        catch (System.Net.Sockets.SocketException se)
        {
            System.Diagnostics.Trace.Write(se.Message);
            return false;
        }
    }
View Code

c#關於判斷網絡連接正常與否的總結

本人最近做c#winform的項目,遇到了判斷網絡是否正常連接的問題。后來查出了以下幾種方法,供大家學習參考。
1.方法一
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
using System.Net.Sockets;
using System.Threading;
namespace WindowsFormsApplication1
{
    public partial class Demo : Form
    {
        public Demo()
        {
            InitializeComponent();
        }
        //判斷
        private void btpanduan_Click(object sender, EventArgs e)
        {
            //210.192.120.228  163網易
            string ip = this.txtip.Text.ToString();
            int port = Convert .ToInt32( this.txtport.Text.ToString());
            bool a = panduan(ip, port );//135為本機服務端口號
            if (a == true)
            {
                MessageBox.Show("該網絡連接正常 !");
            }
            else
            {
                MessageBox.Show("該網絡連接不暢通 !");
            }
        }
      
      // 異步調用
 
        //判斷的方法
        public bool panduan(string ip, int port)
        {
            try
            {
                TcpClient client = new TcpClient(ip, port);
                if (client.Connected)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
            catch
            {
                return false;
            }
        }
    }
}
 
2.利用 c# ping類
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
namespace WindowsFormsApplication1
{
    public partial class Demo3 : Form
    {
        public Demo3()
        {
            InitializeComponent();
        }
        System.Net.NetworkInformation.Ping ping = new System.Net.NetworkInformation.Ping();
        System.Net.NetworkInformation.PingReply res;
        //檢查網絡連接
        private void btcheck_Click(object sender, EventArgs e)
        {
            string url = this.txturl.Text.ToString();
            bool a = check(url);
            if (a == true)
            {
                MessageBox.Show("連接成功!", "提示信息");
            }
            else
            {
                MessageBox.Show("連接失敗!", "提示信息");
            }
        }
        public bool check(string url)
        {
            try
            {
                res = ping.Send(url);
                if (res.Status == System.Net.NetworkInformation.IPStatus.Success)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
            catch {
                return false;
            }
        }
    }
}
 

摘自 wanglei_smartfish的專欄 
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM