我如何以编程方式检查我的机器是否有网络连接,或不使用C / C ++,它只是一个ping该IP的事? 如何NIC办呢? 我的意思是这样的:
我使用Windows 7。
我如何以编程方式检查我的机器是否有网络连接,或不使用C / C ++,它只是一个ping该IP的事? 如何NIC办呢? 我的意思是这样的:
我使用Windows 7。
如果您在Windows上工作,只是试试这个
#include <iostream>
#include <windows.h>
#include <wininet.h>
using namespace std;
int main(){
if(InternetCheckConnection(L"http://www.google.com",FLAG_ICC_FORCE_CONNECTION,0))
{
cout << "connected to internet";
}
return 0;
}
没有什么那种我想,但你可以试试这个:
最简单的方法是尝试连接到已知以外的IP地址。
如果在Windows中出现故障,连接函数将返回SOCKET_ERROR
,并且WSAGetLastError
通常会返回WSAEHOSTUNREACH
(意味着数据包不能被发送到主机)。
在Linux中,你会得到一个-1
,并且errno将ENETUNREACH
。 一些有用的链接:
1.链接,Windows套接字
2.链接为Linux / Unix套接字
除了InternetCheckConnection()函数,在Win32 API中有一个函数( 的InternetGetConnectedState()),它返回(可用性)某种形式的互联网连接的真/假:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa384702(v=vs.85).aspx
它还告诉你什么类型的连接你有互联网(LAN,调制解调器,代理等) - 而这往往是非常方便的就知道了。
实际上有包括代码剪断一个非常聪明的方式在这里 。
它基本上使用CMD选项:虽然CMD击: route print
。
这将路由表地图的数组,并会寻找0.0.0.0作为可用的网络连接。
我用它了while(true){//the code in here } //check for inet connection , else will sleep for 10 mins and check again
下面的代码将工作,如果你使用的是Windows:
#include <iostream>
#include <windows.h>
int main(){
if (system("ping www.google.com")){
std::cout<<"\nNot connnected to the internet\n\n";
}
else{
std::cout<<"\nConnected to the internet\n\n";
}
system("pause");
return 0;
}