判断网络是否连接通

编写下载程序的时候,需要经常判断网络是否连接通,通过下面的方法可以得到网络连接的状态。

要用的函数:InternetGetConnectedState,这个win32 API在系统system32文件夹中winInet.dll中
函数原形:BOOL InternetGetConnectedState(LPDWORD dwFlag,DWORD dwReserved);
参数dwFlag返回当前网络状态,参数dwReserved依然是保留参数,设置为0即可。

INTERNET_CONNECTION_MODEM = 采用调治解调器上网
INTERNET_CONNECTION_LAN = 采用网卡上网;
INTERNET_CONNECTION_PROXY = 采用代理上网;
INTERNET_CONNECTION_MODEM_BUSY = MODEM被其他非INTERNET连接占用;

public class InternetHelper
    {
        //使用DllImport需导入命名空间,InternetGetConnectedState返回的状态标识位的含义:
        private const int INTERNET_CONNECTION_MODEM = 1;
        private const int INTERNET_CONNECTION_LAN = 2;
        private const int INTERNET_CONNECTION_PROXY = 4;
        private const int INTERNET_CONNECTION_MODEM_BUSY = 8;
        [DllImport("winInet.dll ")]
        private static extern bool InternetGetConnectedState(ref  int dwFlag, int dwReserved);

        /// <summary>
        /// 判断是否有网络连接
        /// </summary>
        /// <returns>true 有, false 无</returns>
        public static bool GetInternetConnectState()
        {
            var dwFlag = 0;
            var netStatus = "";

            if (!InternetGetConnectedState(ref dwFlag, 0))
            {
                return false;
            }

            if ((dwFlag & INTERNET_CONNECTION_MODEM) != 0) netStatus = "采用调治解调器上网";
            if ((dwFlag & INTERNET_CONNECTION_LAN) != 0) netStatus = "采用网卡上网";
            if ((dwFlag & INTERNET_CONNECTION_PROXY) != 0) netStatus = "采用代理上网";
            if ((dwFlag & INTERNET_CONNECTION_MODEM_BUSY) != 0) netStatus = "MODEM被其他非INTERNET连接占用";
            return true;
        }
    }

转载于:https://www.cnblogs.com/guyichang/archive/2012/10/12/2721672.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值