如何判断本机当前是否连接到Internet?VC5里为什么用不了InternetGetConnectedState()? 使用RasEnumConnectionsRasGetConnectStatus 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果是局域网通过代理服务器上网,应该算连接到Internet,但如果用你这种方法就是否了! 我用VC6,我用下面的代码:LPDWORD flags;BOOL m_bConnected=::InternetGetConnectedState(flags,NULL);奇怪的是无论我上不上网,m_bConnected总是TRUE。我没有拨号,也没设置代理服务器,结果也是这样,谁能告诉我为什么?另外,MODEM忙,但不是用于上网是什么状态? enmity(真我的风采)能不能给个例子? to winsock: VC5不应该不可以使用的,包含头文件即可了#include <afxinet.h>to neatbeer(网络咖啡) :那是因为你的机器上装有Modem或者网卡 如果我不上网,但装有Modem也会返回真吗?那这个函数还有什么用? internetgetconnectstatus返回的东东在flag里,并且是一些标志位要用位掩码方式来确定,比如验证是否modem连线onlineDWORD flags;::InternetGetConnectedState(&flags,NULL);if ((flags&INTERNET_CONNECTION_MODEM)== INTERNET_CONNECTION_MODEM){ TRACE0("现在用modem连上了网");} to enmity(真我的风采):谢谢to panda_w(好想睡啊!),jazzrabbit(爵士兔): 那,网卡的问题怎么解决?我原来的程序是这样的: LPDWORD flags; BOOL m_bConnected=::InternetGetConnectedState(flags,NULL); switch(*flags) { case INTERNET_CONNECTION_MODEM: SetDlgItemText(IDC_EDIT_METHOD,"拨号上网"); break; case INTERNET_CONNECTION_LAN: SetDlgItemText(IDC_EDIT_METHOD,"通过局域网上网"); break; case INTERNET_CONNECTION_PROXY: SetDlgItemText(IDC_EDIT_METHOD,"通过代理服务器上网"); break; case INTERNET_CONNECTION_MODEM_BUSY: SetDlgItemText(IDC_EDIT_METHOD,"modem正忙,但不是用于上网"); break; default: SetDlgItemText(IDC_EDIT_METHOD,"未知情况");}我通过代理服务器上网的时候,显示“未知情况”,跟踪发现*flag=0x00000056,而上面四个值好像是0 2 4 8 要这么复杂吗???用代码ping一下几个特别的ip,或解几个域名成功的话那不就是连上的INTERNET吗,而且这个方法就不管你通过什么上网的啦。 一样的.就是用标志掩码去屏蔽就行了.#define INCLUDEBIT(m,b) ((m&b)==b)DWORD flags;::InternetGetConnectedState(&flags,NULL);if INCLUDEBIT(flags,INTERNET_CONNECTION_MODEM) { SetDlgItemText(IDC_EDIT_METHOD,"拨号上网"); }else if INCLUDEBIT(flags,INTERNET_CONNECTION_LAN){ SetDlgItemText(IDC_EDIT_METHOD,"通过局域网上网");}else if INCLUDEBIT(flags,INTERNET_CONNECTION_PROXY){ SetDlgItemText(IDC_EDIT_METHOD,"通过代理服务器上网");}else if INCLUDEBIT(flags,INTERNET_CONNECTION_MODEM_BUSY){ SetDlgItemText(IDC_EDIT_METHOD,"modem正忙,但不是用于上网");} else SetDlgItemText(IDC_EDIT_METHOD,"未知情况");明白了不? 在XP系统和2000系统中,为什么U盘的序列号不一样? ==50分求问:同一个函数被连续调用是否会冲突?内详== recvfrom阻塞问题 使用ISequentialStream向数据库插入和修改数据时出错 列表框的使用问题 如何在自己的程序里调用其他exe程序 ASP中怎么调用C语言编写的DLL或OCX中的函数? new 和delete的问题,调试错误。。。。 添加工具栏 那位兄台知道哪个网站有计算机方面的英文技术资料(如:安全,软件,数据库等)? 有谁知道如何在W2K中用程序进行安全策略的设计? 关于多线程同步
LPDWORD flags;
BOOL m_bConnected=::InternetGetConnectedState(flags,NULL);
奇怪的是无论我上不上网,m_bConnected总是TRUE。我没有拨号,也没设置代理服务器,结果也是这样,谁能告诉我为什么?
另外,MODEM忙,但不是用于上网是什么状态?
to neatbeer(网络咖啡) :
那是因为你的机器上装有Modem或者网卡
要用位掩码方式来确定,比如验证是否modem连线online
DWORD flags;
::InternetGetConnectedState(&flags,NULL);
if ((flags&INTERNET_CONNECTION_MODEM)== INTERNET_CONNECTION_MODEM){
TRACE0("现在用modem连上了网");
}
to panda_w(好想睡啊!),jazzrabbit(爵士兔):
那,网卡的问题怎么解决?我原来的程序是这样的:
LPDWORD flags;
BOOL m_bConnected=::InternetGetConnectedState(flags,NULL); switch(*flags)
{
case INTERNET_CONNECTION_MODEM:
SetDlgItemText(IDC_EDIT_METHOD,"拨号上网");
break;
case INTERNET_CONNECTION_LAN:
SetDlgItemText(IDC_EDIT_METHOD,"通过局域网上网");
break;
case INTERNET_CONNECTION_PROXY:
SetDlgItemText(IDC_EDIT_METHOD,"通过代理服务器上网");
break;
case INTERNET_CONNECTION_MODEM_BUSY:
SetDlgItemText(IDC_EDIT_METHOD,"modem正忙,但不是用于上网");
break;
default:
SetDlgItemText(IDC_EDIT_METHOD,"未知情况");
}
我通过代理服务器上网的时候,显示“未知情况”,跟踪发现*flag=0x00000056,而上面四个值好像是0 2 4 8
用代码ping一下几个特别的ip,或解几个域名成功的话那不就是连上的INTERNET吗,而且这个方法就不管你通过什么上网的啦。
DWORD flags;
::InternetGetConnectedState(&flags,NULL);
if INCLUDEBIT(flags,INTERNET_CONNECTION_MODEM)
{
SetDlgItemText(IDC_EDIT_METHOD,"拨号上网");
}else if INCLUDEBIT(flags,INTERNET_CONNECTION_LAN){
SetDlgItemText(IDC_EDIT_METHOD,"通过局域网上网");
}
else if INCLUDEBIT(flags,INTERNET_CONNECTION_PROXY){
SetDlgItemText(IDC_EDIT_METHOD,"通过代理服务器上网");
}else if INCLUDEBIT(flags,INTERNET_CONNECTION_MODEM_BUSY){
SetDlgItemText(IDC_EDIT_METHOD,"modem正忙,但不是用于上网");
}
else SetDlgItemText(IDC_EDIT_METHOD,"未知情况");
明白了不?