c# 判断是否连接公网

有一个需求,软件需要在连接公网的状态下才能使用,否则弹出提示

我们判断一下网络不通情况

1.系统未开启网络:例如关掉了WIFI,拔掉网线

2.网络已连接无internet:连接了路由器,但路由器未连接外网

对于以上两种情况:

1.首先可以使用一下代码,来判断系统是否开启网络

System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable()

2.可以使用ping命令,测试是否能达到目标主机进而判断是否连接了外网

    string host = "www.baidu.com";//测试主机,根据自己需求随意填
	PingReply reply = null;

	Ping ping = new Ping();
	try {
		reply = ping.Send(host);

	}
	catch (Exception e) {
		if (e.Message != "") {
			return false;
		}
	}

	if (reply.Status == IPStatus.Success) {
		return true;//网络正常,可以访问host主机
	}
	else {
		return false;//无法访问网络
	}

这里的ping命令,在路由器没网的情况会报错,用try包裹,如果报错,直接抛出网络未连接即可

那么对于主机,想仅判断局域网内某192.168.X.X 的Host是否连通也可以,这样就从判断是否连接外网到判断是否连接内网某主机或vlan

完整的验证代码如下:

public static bool CheckWebIsConnected() {

	//首先验证,系统级的,wifi或者网络底层配置,是否开启
	bool isSystemNetConnect = System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable();

	if (!isSystemNetConnect) {
		return false;//系统级就没给网,直接返回false
	}

	//如果系统级开启了网络,例如连接了路由器,但路由器内没网
	//使用ping测试主机
	string host = "www.baidu.com";
	PingReply reply = null;

	Ping ping = new Ping();
	try {
		reply = ping.Send(host);

	}
	catch (Exception e) {
		if (e.Message != "") {
			return false;
		}
	}

	if (reply.Status == IPStatus.Success) {
		return true;//网络正常,可以访问host主机
	}
	else {
		return false;//无法访问网络
	}

}


 

相关推荐

  1. c# 判断是否连接

    2023-12-09 12:28:01       55 阅读
  2. c++判断路径是否存在,判断文件夹是否存在

    2023-12-09 12:28:01       21 阅读
  3. 判断是否为闰年?【C语言】

    2023-12-09 12:28:01       37 阅读
  4. c++ 判断人脚位置是否合理

    2023-12-09 12:28:01       32 阅读
  5. 判断是否连接了wifi(坑、坑、坑)

    2023-12-09 12:28:01       29 阅读
  6. 判断某个ip是否在某个段下

    2023-12-09 12:28:01       65 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-09 12:28:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-09 12:28:01       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-09 12:28:01       82 阅读
  4. Python语言-面向对象

    2023-12-09 12:28:01       91 阅读

热门阅读

  1. linuxc语udp发送程序

    2023-12-09 12:28:01       50 阅读
  2. ubuntu 如何修改主机名称

    2023-12-09 12:28:01       49 阅读
  3. Ubuntu 20.04安装禅道开源版

    2023-12-09 12:28:01       50 阅读
  4. ubuntu server 20.04 备份和恢复 系统 LTS

    2023-12-09 12:28:01       47 阅读
  5. useradd 在Linux原生应用开发过程中的简单应用

    2023-12-09 12:28:01       50 阅读
  6. pytorch学习入门之 Variable(变量)

    2023-12-09 12:28:01       53 阅读
  7. 【算法】蓝桥杯2013国C 横向打印二叉树 题解

    2023-12-09 12:28:01       53 阅读
  8. Android 10-13,默认屏幕亮度80%或100%

    2023-12-09 12:28:01       50 阅读