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...