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

 

转载于:https://www.cnblogs.com/blogpro/p/11463306.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值