以编程方式检查我的机器是否具有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; }