以编程方式检查我的机器是否具有Internet访问权限
如何以编程方式检查我的机器是否具有使用C / C ++的Internet访问权限,是否仅仅是ping IP? NIC如何做到这一点? 我的意思是:
我使用的是Windows 7。
如果你在Windows上工作,试试这个
#include #include #include 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中失败,则connect函数将返回SOCKET_ERROR
,并且WSAGetLastError
通常将返回WSAEHOSTUNREACH
(意味着无法将数据包发送到主机)。
在Linux中,你将获得-1
,而errno将是ENETUNREACH
。 一些有用的链接:
1. Windows套接字的链接
2. Linux / Unix套接字的链接
除了InternetCheckConnection()函数之外,Win32 API还有一个函数( InternetGetConnectedState() ),它为某种forms的互联网连接(可用性)返回true / false:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa384702(v=vs.85).aspx
它还告诉您与互联网的连接类型(LAN,调制解调器,代理等) – 这通常非常方便。
实际上有一种非常聪明的方法,包括代码片段。
它基本上使用cmd选项:在CMD命中时: route print
。
这将路由表映射到一个数组,并将0.0.0.0作为可用的Internet连接。
我用了while(true){//the code in here } //check for inet connection , else will sleep for 10 mins and check again
如果您在Windows上,以下代码将起作用:
#include #include 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; }