应该如何监测?是否可以通过监测网卡来获得目前的网络状况?如果不能通过监测网卡来获得,那么有什么好的办法?
谢谢!
9 个解决方案
#1
用PING 命令就明白了
#2
ICMP to assert the statement
#3
有些程序是间隔性地向某个(些)地址发出ICMP包,如果能收到应答就表明网络是通的。
#4
现在主要是要写一段小程序来实现对当前网络状况的监控
#5
To:roland_c
如果周期性的向某个地址发送ICMP包,但是如果这个地址出了问题,就无法得到真实的网络连接状况。而且有些会禁掉ICMP包。
能不能通过监测网卡来获得网络的连接状况?
#6
通过网卡来实行监测就我所知道的是不行的。这些ICMP包的目标地址当然是你预先测试过并且确认会返回ICMP应答的,而且一般来说,要检测的话,不会是只向一个地址发送ICMP包,一般可多准备几个,三五个,只要有一个能返回应答就可以表明网络是通的。
#7
1)用PING,有些公开的网站没有禁止。
2)如果PING被禁止,那么采用HTTP,绝对不会被禁止的。
如果你用CB或者DELPHI,抓一个Http控件,目标设置为大的网站,如 sina,
然后编写几行代码就可以尝试连接该网站主页,
检查返回的代码,如果是网络故障,地址不能解析等,基本判断为未连接到Internet,
如果返回为:请求数据失败,或者对方Server 忙,那么再次请求,一般三次都不成功就可以判断
未连接到Internet。
3)WINDOWS API有个函数是检查Internet连接状态的,我在局域网和拨号都测试过,
你可以试试:
下面是我的CB代码:
#include <wininet.h>
DWORD dwFlag;
bool netLink = InternetGetConnectedState(&dwFlag,0);
// ---------检查是否连接-------------------------------------------
if( netLink )
Label4->Caption="在线"; //
else Label4->Caption="未在线";
// 网络配置
if(dwFlag & INTERNET_CONNECTION_MODEM) Label1->Caption="√ Yes"; //MODEM连接
else Label1->Caption="× No";
if(dwFlag & INTERNET_CONNECTION_LAN) Label2->Caption="√ Yes"; //LAN连接
else Label2->Caption="× No";
if(dwFlag & INTERNET_CONNECTION_PROXY) Label3->Caption="√ Yes"; //代理连接
else Label3->Caption="× No";
if(dwFlag & INTERNET_CONNECTION_OFFLINE) Label5->Caption="√ Yes";//离线。注:不好用!
else Label5->Caption="× No";
if(dwFlag & INTERNET_RAS_INSTALLED) Label6->Caption="√ Yes";
else Label6->Caption="× No";
if(dwFlag & INTERNET_CONNECTION_CONFIGURED) Label7->Caption="√ Yes";
else Label7->Caption="× No";
2)如果PING被禁止,那么采用HTTP,绝对不会被禁止的。
如果你用CB或者DELPHI,抓一个Http控件,目标设置为大的网站,如 sina,
然后编写几行代码就可以尝试连接该网站主页,
检查返回的代码,如果是网络故障,地址不能解析等,基本判断为未连接到Internet,
如果返回为:请求数据失败,或者对方Server 忙,那么再次请求,一般三次都不成功就可以判断
未连接到Internet。
3)WINDOWS API有个函数是检查Internet连接状态的,我在局域网和拨号都测试过,
你可以试试:
下面是我的CB代码:
#include <wininet.h>
DWORD dwFlag;
bool netLink = InternetGetConnectedState(&dwFlag,0);
// ---------检查是否连接-------------------------------------------
if( netLink )
Label4->Caption="在线"; //
else Label4->Caption="未在线";
// 网络配置
if(dwFlag & INTERNET_CONNECTION_MODEM) Label1->Caption="√ Yes"; //MODEM连接
else Label1->Caption="× No";
if(dwFlag & INTERNET_CONNECTION_LAN) Label2->Caption="√ Yes"; //LAN连接
else Label2->Caption="× No";
if(dwFlag & INTERNET_CONNECTION_PROXY) Label3->Caption="√ Yes"; //代理连接
else Label3->Caption="× No";
if(dwFlag & INTERNET_CONNECTION_OFFLINE) Label5->Caption="√ Yes";//离线。注:不好用!
else Label5->Caption="× No";
if(dwFlag & INTERNET_RAS_INSTALLED) Label6->Caption="√ Yes";
else Label6->Caption="× No";
if(dwFlag & INTERNET_CONNECTION_CONFIGURED) Label7->Caption="√ Yes";
else Label7->Caption="× No";
#8
不太好弄
#9
send icpm echo package can get current network status.
http://search.csdn.net/Expert/topic/1388/1388048.xml?temp=.8345148
http://search.csdn.net/Expert/topic/1388/1388048.xml?temp=.8345148
#1
用PING 命令就明白了
#2
ICMP to assert the statement
#3
有些程序是间隔性地向某个(些)地址发出ICMP包,如果能收到应答就表明网络是通的。
#4
现在主要是要写一段小程序来实现对当前网络状况的监控
#5
To:roland_c
如果周期性的向某个地址发送ICMP包,但是如果这个地址出了问题,就无法得到真实的网络连接状况。而且有些会禁掉ICMP包。
能不能通过监测网卡来获得网络的连接状况?
#6
通过网卡来实行监测就我所知道的是不行的。这些ICMP包的目标地址当然是你预先测试过并且确认会返回ICMP应答的,而且一般来说,要检测的话,不会是只向一个地址发送ICMP包,一般可多准备几个,三五个,只要有一个能返回应答就可以表明网络是通的。
#7
1)用PING,有些公开的网站没有禁止。
2)如果PING被禁止,那么采用HTTP,绝对不会被禁止的。
如果你用CB或者DELPHI,抓一个Http控件,目标设置为大的网站,如 sina,
然后编写几行代码就可以尝试连接该网站主页,
检查返回的代码,如果是网络故障,地址不能解析等,基本判断为未连接到Internet,
如果返回为:请求数据失败,或者对方Server 忙,那么再次请求,一般三次都不成功就可以判断
未连接到Internet。
3)WINDOWS API有个函数是检查Internet连接状态的,我在局域网和拨号都测试过,
你可以试试:
下面是我的CB代码:
#include <wininet.h>
DWORD dwFlag;
bool netLink = InternetGetConnectedState(&dwFlag,0);
// ---------检查是否连接-------------------------------------------
if( netLink )
Label4->Caption="在线"; //
else Label4->Caption="未在线";
// 网络配置
if(dwFlag & INTERNET_CONNECTION_MODEM) Label1->Caption="√ Yes"; //MODEM连接
else Label1->Caption="× No";
if(dwFlag & INTERNET_CONNECTION_LAN) Label2->Caption="√ Yes"; //LAN连接
else Label2->Caption="× No";
if(dwFlag & INTERNET_CONNECTION_PROXY) Label3->Caption="√ Yes"; //代理连接
else Label3->Caption="× No";
if(dwFlag & INTERNET_CONNECTION_OFFLINE) Label5->Caption="√ Yes";//离线。注:不好用!
else Label5->Caption="× No";
if(dwFlag & INTERNET_RAS_INSTALLED) Label6->Caption="√ Yes";
else Label6->Caption="× No";
if(dwFlag & INTERNET_CONNECTION_CONFIGURED) Label7->Caption="√ Yes";
else Label7->Caption="× No";
2)如果PING被禁止,那么采用HTTP,绝对不会被禁止的。
如果你用CB或者DELPHI,抓一个Http控件,目标设置为大的网站,如 sina,
然后编写几行代码就可以尝试连接该网站主页,
检查返回的代码,如果是网络故障,地址不能解析等,基本判断为未连接到Internet,
如果返回为:请求数据失败,或者对方Server 忙,那么再次请求,一般三次都不成功就可以判断
未连接到Internet。
3)WINDOWS API有个函数是检查Internet连接状态的,我在局域网和拨号都测试过,
你可以试试:
下面是我的CB代码:
#include <wininet.h>
DWORD dwFlag;
bool netLink = InternetGetConnectedState(&dwFlag,0);
// ---------检查是否连接-------------------------------------------
if( netLink )
Label4->Caption="在线"; //
else Label4->Caption="未在线";
// 网络配置
if(dwFlag & INTERNET_CONNECTION_MODEM) Label1->Caption="√ Yes"; //MODEM连接
else Label1->Caption="× No";
if(dwFlag & INTERNET_CONNECTION_LAN) Label2->Caption="√ Yes"; //LAN连接
else Label2->Caption="× No";
if(dwFlag & INTERNET_CONNECTION_PROXY) Label3->Caption="√ Yes"; //代理连接
else Label3->Caption="× No";
if(dwFlag & INTERNET_CONNECTION_OFFLINE) Label5->Caption="√ Yes";//离线。注:不好用!
else Label5->Caption="× No";
if(dwFlag & INTERNET_RAS_INSTALLED) Label6->Caption="√ Yes";
else Label6->Caption="× No";
if(dwFlag & INTERNET_CONNECTION_CONFIGURED) Label7->Caption="√ Yes";
else Label7->Caption="× No";
#8
不太好弄
#9
send icpm echo package can get current network status.
http://search.csdn.net/Expert/topic/1388/1388048.xml?temp=.8345148
http://search.csdn.net/Expert/topic/1388/1388048.xml?temp=.8345148