快速判断站点是否存活的 3 种编程实现

前言

如何知道外部站点是否正在运行?

如果使用浏览器,直接访问对应站点即可。

那么,使用 C# 以编程方式,如何实现呢?

GET 请求

首先想到的,就是使用 HttpClient 向该站点发送 HTTP 请求,并检查返回状态:

var httpClient = new HttpClient();  
var result = await httpClient.GetAsync("http://somesite.xxx");
Console.WriteLine(result.IsSuccessStatusCode);

但是,GET 请求会返回响应正文,会耗费一定的带宽资源。

HEAD 请求

改进的方式,是使用 HEAD 请求,它不会返回响应正文:

var httpClient = new HttpClient();
var request = new HttpRequestMessage
{RequestUri = new Uri("http://somesite.xxx"),Method = HttpMethod.Head
};
var result = await httpClient.SendAsync(request);
Console.WriteLine(result.IsSuccessStatusCode);

但是,这也会有一些问题,比如站点改成需要身份验证了,则上述代码会返回 false,即使站点是运行状态。

Ping

使用命令行时,可以运行 ping 命令并查看结果:

6d149bb7103fefe8248bf4f7665952a7.jpeg

C# 下同样可以使用 Ping:

Ping ping = new Ping();
var hostName = new Uri("http://somesite.xxx").Host;var result = await ping.SendPingAsync(hostName);
Console.WriteLine(result.Status == IPStatus.Success);

需要注意的是,如果站点开启防火墙,禁止了 ping 命令的 ICMP 回显消息,则上述代码会返回 false。

结论

你有什么其他的方法?欢迎到“My IO”公众号留言讨论!

添加微信号【MyIO666】,邀你加入技术交流群

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/284747.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构与算法】拓扑排序问题C语言实现

拓扑排序是有向无环图的一种应用,在实际生活中用的很多。 比如GIS专业的课程设计,许多课程需要前置课程要求,也就是说没上过A课程、则不可能直接去学B课程,画个图表就是: 同理,我们教材中的范例:穿衣服的过程也是一个拓扑排序问题,如下表: 有关这个拓扑排序的模型构造…

[转]2020年排名前20的基于SpringBoot搭建的开源项目,帮你快速进行项目搭建!

△Hollis, 一个对Coding有着独特追求的人△ 这是Hollis的第 287 篇原创分享 作者 l Hollis 来源 l Hollis(ID:hollischuang) SpringBoot一直是开发者比较青睐的一款轻量级框架,他不仅继承了Spring框架原有的优秀特性,而…

C# 搭建一个基于.NET5的WPF入门项目

概述.NET5 发布已经有一阵子了,今天抽空体验一哈,搭建一个WPF项目实例,看看和传统的.NET Framework有什么区别!开发环境:VS2019 WPF框架:Caliburn.Micro 版本4.0.173.NET版本:.NET5.0项目创建步…

五个最佳案例带你解读 Node.js 的前后之道

Node.js 是什么? Node.js 采用 C语言编写而成,浏览器内核 V8 做为执行引擎; Node 不是 JS 应用、而是一个 Javascript 的运行环境。 Node 保留了前端浏览器 js 的接口,没有改写语言本身的任何特性,依旧基于作用域和原型…

【ArcGIS风暴】根据海拔范围分级统计GIMMS 3g NDVI平均值案例教程——以甘肃省为例

在论文写作时,通常要根据区域进行统计栅格数据。本文以甘肃省dem、NDVI数据为例,讲解根据海拔范围分级统计NDVI平均值、最大值、最小值和面积等。 1. 海拔分类 dem是本案例的最基本数据,打开ArcMap,加载dem数据,如下图所示: 首先要对dem进行分级,所使用的到的工具是重分…

【转】知道这20个正则表达式,能让你少写1,000行代码

正则表达式,一个十分古老而又强大的文本处理工具,仅仅用一段非常简短的表达式语句,便能够快速实现一个非常复杂的业务逻辑。熟练地掌握正则表达式的话,能够使你的开发效率得到极大的提升。下面是技匠整理的,在前端开发…

Dapr中国社区网站(预览版)发布!

点击蓝字关注我们社区介绍Dapr 是一个可移植的、事件驱动的运行时,它使任何开发人员能够轻松构建出弹性的、无状态和有状态的应用程序,并可运行在云平台或边缘计算中。Dapr 中国社区是一个以 Dapr 为中心的中立而开放的技术社区,为 Dapr 用户…

【ArcGIS风暴】ArcGIS自动生成标识码(BSM)的两种方法案例教程

1. 标识码编制规则 按照每个图层要素的标识码应具有唯一代码的基本要求,根据《GB/T 7027-2002 信息分类和编码的基本原则与方法》规定的信息分类原则和方法,要素标识码采用二层 20 位层次码结构,由村级行政区划代码、要素标识码顺序号构成。具体如下: (1)第一层为村级行…

数据分析入门_char01

数据分析入门_char01 转载于:https://www.cnblogs.com/zsr0401/p/6370697.html

【BIM入门实战】Revit2018项目模板、族库图文安装教程

【扩展阅读】:【MIB】Win11平台上Revit 2018_x64简体中文版图文安装与卸载完整教程 一、Revit 族库、项目样板缺失的产生原因 1、断网或者网络不稳定环境下安装Revit。 2、Revit配置安装界面中取消勾选“Autodesk Revit Content Librabries”。 3、下载了没有自带族库的软件…

一台服务部署多个tomcat注意事项

第一步 添加tomcat环境变量 # vim /etc/profile加入下代码 # TOMCAT ATALINA_BASE/usr/local/tomcat8CATALINA_HOME/usr/local/tomcat8TOMCAT_HOME/usr/local/tomcat8export ATALINA_BASE CATALINA_HOME TOMCAT_HOME 修改应用环境变量,是配置生效# source /etc/pro…

python 使用 sha256 函数对密码进行加密

在 hashlib 库中,可以使用 sha256 函数对密码进行加密。下面是一个示例代码: import hashlibdef hash_password(password):# 创建一个 sha256 对象sha256_hash hashlib.sha256()# 使用 update() 方法将密码传入 sha256 对象sha256_hash.update(passwor…

今天面试一个老程序员,号称自带资源,竟然是从所有前公司偷拷的源代码!...

说到“自带资源”,你会想到什么?一位程序员的“资源”令人震惊:竟然是从前公司偷的源代码!一位网友说:今天面试一个老程序员,说自己有5年的开发经验,离职原因是上家公司倒闭了。上机测试啥都不会…

【ArcGIS风暴】根据海拔(坡度)范围分级统计土地覆盖的类型和面积(兰州市GlobeLand30m数据为例)

本文基于DEM和GlobeLand30m土地覆盖数据,讲解根据海拔范围和坡度范围分级逐级统计兰州市土地覆盖的类型和面积。 一、数据准备 1. DEM数据 海拔和坡度分级都要基于dem来实现。文中采用的DEM数据空间分辨率为30m,由甘肃省30mdem掩膜提取而来,加载如下所示: 2. 土地覆盖数据…

html5 弹性布局

html5 弹性布局 一、移动开发常用技巧 Viewport基本知识 设置布局Viewport的各种信息1、widthdevice-width; 设置Viewport视口宽度等于设备宽度2、initial-scale1; 网页默认缩放比为1(网页在手持设备上,不会进行默认缩放3、minimum-scale1 网…

Excel 宏代码实现按相同值分组设置背景颜色

AltF11,打开编辑器,按如下代码编写代码: Sub SetGroupBg()Dim i, j, cColors Array("#CEFFCE", "#D7FFEE", "#D9FFFF", "#C4E1FF", "#DDDDFF", "#FFDAC8", "#FFE4CA&quo…

开源WPF控件库-AdonisUI

原文:https://github.com/benruehl/adonis-ui翻译:沙漠尽头的狼(谷歌翻译加持)用于 WPF 应用程序的轻量级 UI 工具包,提供经典和增强的 Windows 视觉效果:仓库信息仓库地址:https://github.com/benruehl/adonis-uiDemo&#xff1a…

Unity3D脚本的生命周期(执行顺序)

Unity脚本中有许多固定的函数 例如Start();Update(); 而这些函数都有固定的执行顺序 搞清楚这些函数的执行顺序 对于我们理清代码的逻辑就显得尤为重要 举个简单的例子 //脚本A public static int a 1; void Start(){a 2; }//脚本B void Start(){Debug.Log(A.a); } 这时&…

【ArcGIS微课1000例】0023:ArcGIS将地理照片(无人机照片)转为点(航迹)案例教程

本文演示在ArcGIS中,批量将无人机航测获取的带有地理坐标的照片转为点,形成航线轨迹,并计算出三维坐标,为航测数据内业处理提供一定的基础支持。 1. 效果展示 无人机正射照片: 地理坐标转点(航迹): 2. 工具介绍 在ArcGIS中提供了批量将无人机多张照片自带的地理坐标转…

《A Seat at the Table》作者访谈录

\本文要点\\CIO(首席信息官)和IT领导者们必须重新定义他们的IT组织与其他企业之间的关系,只有这样才能利用DevOps带来的敏捷和开发周期的缩短。\\t传统的观点认为,IT部门是“业务”的一个独立承包商,这样的观点阻碍了公…