• 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
  • 相关阅读:
    解决mysql错误1130的方法(远程出错)
    取消pve无效订阅弹窗命令
    测试环境主机执行脚本
    OpenStack Ocata版本安装
    OpenStack简介
    JVM内存分配及调优方案(基于JDK1.8)
    大数据之数据仓库
    clickhouse核心引擎MergeTree子引擎
    clickhouse高可用-节点宕机数据一致性方案-热扩容
    Clickhouse集群部署
  • 原文地址:https://www.cnblogs.com/blogpro/p/11463306.html
Copyright © 2020-2023  润新知