-->

编程方式检查我的机器是否有网络连接,或不(Programmatically check whethe

2019-08-19 04:47发布

我如何以编程方式检查我的机器是否有网络连接,或不使用C / C ++,它只是一个ping该IP的事? 如何NIC办呢? 我的意思是这样的:

我使用Windows 7。

Answer 1:

如果您在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;
}


Answer 2:

没有什么那种我想,但你可以试试这个:

最简单的方法是尝试连接到已知以外的IP地址。

如果在Windows中出现故障,连接函数将返回SOCKET_ERROR ,并且WSAGetLastError通常会返回WSAEHOSTUNREACH (意味着数据包不能被发送到主机)。

在Linux中,你会得到一个-1 ,并且errno将ENETUNREACH 。 一些有用的链接:

1.链接,Windows套接字

2.链接为Linux / Unix套接字



Answer 3:

除了InternetCheckConnection()函数,在Win32 API中有一个函数( 的InternetGetConnectedState()),它返回(可用性)某种形式的互联网连接的真/假:

https://msdn.microsoft.com/en-us/library/windows/desktop/aa384702(v=vs.85).aspx

它还告诉你什么类型的连接你有互联网(LAN,调制解调器,代理等) - 而这往往是非常方便的就知道了。



Answer 4:

实际上有包括代码剪断一个非常聪明的方式在这里 。

它基本上使用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



Answer 5:

下面的代码将工作,如果你使用的是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;
}


文章来源: Programmatically check whether my machine has internet access or not