檢測網路連線是否正常的方法

2021-07-08 10:05:17 字數 4268 閱讀 7019

1. internetcheckconnect只能檢測類似於http開頭的**,例如你只能寫:

internetcheckconnect(_t(""), flag_icc_force_connection, 0);

不能檢測internetcheckconnect(_t("127.0.0.1"), flag_icc_force_connection, 0);這樣的ip位址,如果寫成這種情況即使網路是正常的,函式返回值也是0,而且錯誤碼還不是msdn上說的error_not_connected。

//本機網路連線型別(成功)

#define  net_type_ras_dial_up_connect_net           0x01    //上網型別:採用ras撥號連線上網    0x01

#define  net_type_lan_connect_net                   0x02    //上網型別:採用網**過區域網上網 0x02

#define  net_type_proxy_connect_net                 0x04    //上網型別:使用**伺服器上網     0x04

#define  net_type_ras_install                       0x10    //ras安裝                        0x10

//本機網路連線(失敗)

#define  net_type_no_connect_net                    0x41    //未連線到網路

#define  net_state_valid_connect_noconnect_net      0x40    //可以聯網,但當前不可用    0x40

#define  net_state_modem_busy                       0x08    //數據機 繁忙           0x08

#define  net_state_system_offline_mode              0x20    //系統離線模式              0x20

checknet()  

if(dwonline & internet_connection_modem_busy)  

if(dwonline & internet_connection_offline)  

return

net_type_no_connect_net;  

}  if

( dwonline& internet_connection_modem )      

//上網型別:採用ras撥號連線上網

else

if( dwonline&internet_connection_lan  )  

//上網型別:採用網**過區域網上網

else

if( dwonline& internet_connection_proxy) 

else

if( dwonline&internet_connection_modem_busy ) 

//modem被其他非internet連線占用

}  msdn中定義了7種引數型別,但實際中wininet.h標頭檔案中只對四種型別的值進行了定義

7種型別:

internet_connection_lan          區域網

internet_connection_modem        撥號上網

internet_connection_proxy       **

internet_connection_modem_busy  **被占用

internet_connection_configured    雖然可以聯網,但當前不可用

internet_connection_offline     離線

internet_ras_installed       ras安裝

wininet.h標頭檔案中值定義:

// flags for internetgetconnectedstate and ex

#define internet_connection_modem           0x01

#define internet_connection_lan             0x02

#define internet_connection_proxy           0x04

#define internet_connection_modem_busy      0x08  /* no longer used */

#define internet_ras_installed              0x10

#define internet_connection_offline         0x20

#define internet_connection_configured      0x40

internetgetconnectedstate():對網路狀況不能及時反應

isnetworkalive():可以及時反應網路連通情況,但是需要服務system event notification支援(系統預設自動啟動該服務)。使用該函式,需要安裝最新的sdk(如.net的)

微軟文件:

system event notification(sens) 服務監視並跟蹤計算機事件(如 windows 登入網路和電源事件)。它還將這些事件通知給com+ 事件系統訂閱者。在 windows xp 和 windows server 2003 上預設安裝並自動執行此服務。

如果system event notification服務停止,com+ event system服務的訂閱者將不會接收到事件通知,並且會發生以下問題:

•win32 api isnetworkalive() 和 isdestinationreachable() 將無法執行。這些 api 大多在可攜式計算機的移動應用程式中使用。

•isens* 介面將無法使用。sens 登入/登出通知將失敗。

•syncmgr (mobsync.exe) 將無法正常執行。syncmgr 依賴於連線資訊,以及來自 sens 的網路連線/斷開、登入/登出通知。

•com+ eventsystem 試圖向 sens 通知某些事件時將失敗。

volume shadow copy服務將不能正常載入,這將導致 windows 備份 api 失敗。

view plain

copy to clipboard

print?

//#include "stdafx.h"

#include "test.h"

#include 

#include 

#ifdef _debug

#define new debug_new

#undef this_file

static

char

this_file = __file__;  

#endif

/using

namespace

std;  

void

fun_internetgetconnectedstate()  

if((flags & internet_connection_lan) ==internet_connection_lan)  

if((flags & internet_connection_proxy) ==internet_connection_proxy)  

if((flags & internet_connection_modem_busy) ==internet_connection_modem_busy)  

}  else

;  }  

void

fun_isnetworkalive()  

if((flags & network_alive_wan) ==network_alive_wan)  

if((flags & network_alive_aol) ==network_alive_aol)  

}  else

;  }  

int_tmain(

intargc, 

tchar

* argv, 

tchar

* envp)  

else

cout << endl;  

}  }  

return

nretcode;  } 

判斷網路連線是否正常的方法

win32 api函式的做法 要用的函式 internetgetconnectedstate 函式原形 bool internetgetconnectedstate lpdword lpdwflags,dword dwreserved 引數lpdwflags返回當前網路狀態,引數dwreserved...

Android 檢測網路連線是否可用

首先,獲取網路連線狀態需要授予乙個許可權 在 androidmanifest.xml 檔案中 設定如下授權語句 android name android.permission.access network state 更詳細,全面的授權語句查詢請參考 android permission 訪問許可權...

Android 檢測網路連線狀態

檢測是否接入網際網路 connectivitymanager cm connectivitymanager context.getsystemservice context.connectivity service networkinfo activenetwork cm.getactivenetw...