准确判断网络连接方式和当前连接状态

当用WIFI连接到CMCC即便没有认证登录也会显示己连接

 

; 环境: AutoHotkey 1.1.05.01 Unicode, Windows XP

#NoEnv

ahkcs := "http://www.baidu.com"

MsgBox, % "上网方式: " W_InternetGetConnectedState() "`n连接状态: " W_IsNetworkAlive() "`n"
MsgBox, % W_InternetCheckConnection(ahkcs) ? "成功连接到 baidu.com":"连接失败"
Return

;        判断网络连接方式
W_InternetGetConnectedState()
{
        INTERNET_CONNECTION_MODEM := 0x01
        INTERNET_CONNECTION_LAN := 0x02
        INTERNET_CONNECTION_PROXY := 0x04
        
        lpdwFlags := ""        ; 上网方式
        IsOnline := TRUE        ; 是否在线
        dwReserved := 0
        
        IsOnline := DllCall("Wininet.dll\InternetGetConnectedState", "UInt*", lpdwFlags, "Uint", dwReserved, "Int")
        if (IsOnline)        ; 在线  
        {  
                if ((lpdwFlags & INTERNET_CONNECTION_MODEM) = INTERNET_CONNECTION_MODEM)
                {
                        return, "Local system uses a modem to connect to the Internet."
                }
                if ((lpdwFlags & INTERNET_CONNECTION_LAN) = INTERNET_CONNECTION_LAN)
                {
                        return, "Local system uses a local area network to connect to the Internet."
                }
                if ((lpdwFlags & INTERNET_CONNECTION_PROXY) = INTERNET_CONNECTION_PROXY)
                {
                        return, "Local system uses a proxy server to connect to the Internet."
                }
        }
        else
                return, "Local system is in offline mode."
}

;        判断当前网络连接状态
W_IsNetworkAlive()
{
    NETWORK_ALIVE_LAN := 0x1
    NETWORK_ALIVE_WAN := 0x2
    NETWORK_ALIVE_AOL := 0x4
        
          lpdwFlags := ""        ; 上网方式
        IsOnline := TRUE        ; 是否在线

        IsOnline := DllCall("Sensapi.dll\IsNetworkAlive", "UInt*", lpdwFlags)
        if A_LastError
                return, "ERROR"
        if (IsOnline)
        {  
                if ((lpdwFlags & NETWORK_ALIVE_LAN) = NETWORK_ALIVE_LAN)
                {
                        return, "NETWORK_ALIVE_LAN"
                }
                if ((lpdwFlags & NETWORK_ALIVE_WAN) = NETWORK_ALIVE_WAN)
                {
                        return, "NETWORK_ALIVE_WAN"
                }
                if ((lpdwFlags & NETWORK_ALIVE_AOL) = NETWORK_ALIVE_AOL)
                {
                        return, "NETWORK_ALIVE_AOL"
                }
        }
        else
                return, "Local system is in offline mode."
}

;        判断是否可以与某个 URL 建立连接
W_InternetCheckConnection(lpszUrl)
{
        FLAG_ICC_FORCE_CONNECTION := 0x1
        dwReserved := 0x0
        return, DllCall("Wininet.dll\InternetCheckConnection", "Ptr", &lpszUrl, "UInt", FLAG_ICC_FORCE_CONNECTION, "UInt", dwReserved, "Int")
}

 

 

转载于:https://www.cnblogs.com/cnsealine/p/3343732.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Android 应用中,可以通过 ConnectivityManager 类来获取当前网络连接状态,进而判断当前连接的网络是否可以上网。具体实现方法如下: ```java ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); if (networkInfo != null && networkInfo.isConnected()) { // 判断当前网络是否可以上网 if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) { // 当前连接的是 WiFi 网络 // 判断是否可以上网,可以使用 ping 命令测试网络连通性 // 可以使用 Runtime.getRuntime().exec() 方法执行 ping 命令 } else if (networkInfo.getType() == ConnectivityManager.TYPE_MOBILE) { // 当前连接的是移动网络(流量) // 判断是否可以上网,同样可以使用 ping 命令测试网络连通性 // 可以使用 Runtime.getRuntime().exec() 方法执行 ping 命令 } } else { // 当前连接网络 } ``` 在上述代码中,先通过 ConnectivityManager 获取当前网络连接状态,如果 networkInfo 不为 null 并且 isConnected() 方法返回 true,则说明当前连接了网络,可以继续判断网络类型。对于 WiFi 和移动网络,可以使用 ping 命令测试网络连通性,从而判断当前连接的网络是否可以上网。如果当前连接网络,则无法判断当前连接的网络是否可以上网。 需要注意的是,使用 ping 命令测试网络连通性可能会受到防火墙等因素的影响,因此测试结果并不一定准确。如果需要更加准确判断当前连接的网络是否可以上网,可以考虑通过访问特定的网址来测试网络连通性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值