#include "stdafx.h" #include "test.h" #include <Wininet.h> #include <Sensapi.h>
#ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif
///////////////////////////////////////////////////////////////////////////// // The one and only application object
CWinApp theApp;
using namespace std;
void Fun_InternetGetConnectedState() { //#define INTERNET_CONNECTION_MODEM 1 //#define INTERNET_CONNECTION_LAN 2 //#define INTERNET_CONNECTION_PROXY 4 //#define INTERNET_CONNECTION_MODEM_BUSY 8 DWORD flags;//上网方式 BOOL m_bOnline=TRUE;//是否在线
m_bOnline=InternetGetConnectedState(&flags,0); if(m_bOnline)//在线 { if ((flags & INTERNET_CONNECTION_MODEM) ==INTERNET_CONNECTION_MODEM) { cout<<"在线:拨号上网/n"; } if ((flags & INTERNET_CONNECTION_LAN) ==INTERNET_CONNECTION_LAN) { cout<<"在线:通过局域网/n"; } if ((flags & INTERNET_CONNECTION_PROXY) ==INTERNET_CONNECTION_PROXY) { cout<<"在线:代理/n"; } if ((flags & INTERNET_CONNECTION_MODEM_BUSY) ==INTERNET_CONNECTION_MODEM_BUSY) { cout<<"MODEM被其他非INTERNET连接占用/n"; } } else cout<<"不在线/n"; }
void Fun_IsNetworkAlive() { DWORD flags;//上网方式 BOOL m_bOnline=TRUE;//是否在线
m_bOnline=IsNetworkAlive(&flags); if(m_bOnline)//在线 { if ((flags & NETWORK_ALIVE_LAN) ==NETWORK_ALIVE_LAN) { cout<<"在线:NETWORK_ALIVE_LAN/n"; } if ((flags & NETWORK_ALIVE_WAN) ==NETWORK_ALIVE_WAN) { cout<<"在线:NETWORK_ALIVE_WAN/n"; } if ((flags & NETWORK_ALIVE_AOL) ==NETWORK_ALIVE_AOL) { cout<<"在线:NETWORK_ALIVE_AOL/n"; } } else cout<<"不在线/n"; }
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { int nRetCode = 0;
// initialize MFC and print and error on failure if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) { // TODO: change error code to suit your needs cerr << _T("Fatal Error: MFC initialization failed") << endl; nRetCode = 1; } else { // TODO: code your application's behavior here. // CString strHello; // strHello.LoadString(IDS_HELLO); // cout << (LPCTSTR)strHello << endl; int i=0; while (TRUE) { cout << "请选择测试的方式:/n" << "1. InternetGetConnectedState/n" << "2. IsNetworkAlive" << endl; cin >> i; switch(i) { case 1: Fun_InternetGetConnectedState(); break; case 2: Fun_IsNetworkAlive(); break; default: cout << "错误!/n"; } cout << endl; }
}
return nRetCode; }
说明: InternetGetConnectedState():对网络状况不能及时反应 IsNetworkAlive():可以及时反应网络连通情况,但是需要服务System Event Notification支持(系统默认自动启动该服务)。使用该函数,需要安装最新的SDK(如.net的)
|