一些关于vc的问答
源代码在线查看: subject_25300.htm
序号:25300 发表者:精灵老豆 发表日期:2002-12-20 14:15:52
主题:请问怎么知道现在的网络已经断了(编程)?
内容:如题。
返回上页访问论坛
回复者:bird 回复日期:2002-12-20 14:19:43
内容: 有一个ras的api函数RasEnumConnections可以查出现在系统中所有的连接,返回是0就是没有连接了。 下面是一个例子: BOOL WINAPI IsModemOnline() { RASCONN ras[20]; DWORD dSize,dNumber,dCount; ras[0].dwSize = sizeof(RASCONN); dSize = sizeof( ras ); if( RasEnumConnections( ras, &dSize, &dNumber ) == 0 ) if(dNumber>0)return TRUE; return FALSE; } 如果返回TRUE就表示有连接。该例子在VC 6.0 pack2 + Win2000 pro通过。
返回上页访问论坛
回复者:超频 回复日期:2002-12-20 14:21:03
内容:利用ICMP协议实现类似Ping.exe的功能即可
返回上页访问论坛
回复者:bird 回复日期:2002-12-20 14:21:15
内容: 用Win32 API 函数,定义在Wininet.h中: BOOL InternetGetConnectedState() VC/BC/BCB 都可用。
返回上页访问论坛
答案被接受回复者:bird 回复日期:2002-12-20 14:21:41
内容:在线返回 TRUE, 掉线返回 FALSE。遍历系统中所有 RAS 连接判断连接情况。Win2K/98 VC6 通过 BOOL CRasThread::GetConnectState() { LPRASCONN lpRasConn = NULL; DWORD cbBuf = 0; DWORD cConn = 0; DWORD dwRet = 0; HRASCONN hrasconn; RASCONNSTATUS rasStatus; UINT ndx; // enumerate connections cbBuf = sizeof(RASCONN); if ( (lpRasConn = ( LPRASCONN ) malloc((UINT)cbBuf)) != NULL) { lpRasConn->dwSize = sizeof( RASCONN ); dwRet = RasEnumConnections( lpRasConn, &cbBuf, &cConn ); for (ndx = 0; ndx < cConn; ndx++) { // get to HRASCONN hrasconn = lpRasConn[ndx].hrasconn; // get connection status rasStatus.dwSize = sizeof(RASCONNSTATUS); dwRet = RasGetConnectStatus( hrasconn, &rasStatus ); if ( dwRet ) return 0; else { if (rasStatus.rasconnstate == RASCS_Connected) return 1; else return 0; } } } else { return 0; } }
返回上页访问论坛