以编程方式查看PC是否连接到指定网络

时间:2015-03-16 22:13:36

标签: c++ windows network-programming

操作系统:Windows,语言:C ++

我正在实施此用例: 当用户启动我的软件时,软件需要知道他/她的PC当前是否连接到指定的网络(例如大学校园内联网)。只有在是的情况下,才会启用某些软件的功能。

我是这个领域的新手,实在无法说出可靠的编程方式。函数GetComputerNameEx(https://msdn.microsoft.com/en-us/library/windows/desktop/ms724301%28v=vs.85%29.aspx)似乎很有希望。如果此函数适用于我的用例,我可以依赖此函数获得哪些数据?

提前致谢!

2 个答案:

答案 0 :(得分:1)

更可靠的指标之一是存在某些MAC地址:这些仅在局域网内可见,而不是在全球互联网上。即使在NAT的IPv4网络上,MAC地址也将是全球唯一的。

在Windows上,您可以尝试SendArp

答案 1 :(得分:0)

我认为你只能知道这台电脑是否连接到互联网。 您无法使用集线器找到大学互联网或某个家庭网络之间的差异。

您必须通过ping一个已知良好的服务器(例如google.com),ping您的authserver或任何可以确保本机连接到互联网的方式来检查此连接。

#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;
}
refrence :

Nayana Adassuriya