基于C#制作一个网址检测工具

news2024/11/18 5:52:41

此文主要基于C#制作一个网址检测工具。随着时间推移以及公司人员的变动,手头所负责的项目也越来越多,对网站运行状况的管理也是一件让人十分头疼的事,秉持着偷懒是第一生产力的原则,制作一个工具对网址一键监测。

    • 实现流程
      • 1、创建项目
      • 2、页面设计
      • 3、功能实现

实现流程

1、创建项目

  1. 打开Visual Studio,右侧选择创建新项目。

在这里插入图片描述

  1. 搜索框输入winform,选择windows窗体应用,填写对应的保存路径点击下一步,创建成功后如下图,会有一个默认打开的Form窗体。

在这里插入图片描述
在这里插入图片描述

2、页面设计

  1. 准备对应的图标素材,通过Icon以及窗体Text属性修改窗体图标以及标题显示;同时配置StartPosition属性值为CenterScreen,让窗体默认居中显示。

在这里插入图片描述

在这里插入图片描述

  1. 在左侧工具箱拖拽TextBox以及Button控件,实现界面大致布局。

在这里插入图片描述
在这里插入图片描述

  1. 单击窗体上TextBox的小箭头,设置允许TextBox置于显示多行文本的模式。

在这里插入图片描述

  1. Button控件照葫芦画瓢通过设置其Text属性修改按钮文本显示。

在这里插入图片描述

在这里插入图片描述

3、功能实现

  1. 封装http请求函数,用于创建http请求及响应code。

在这里插入图片描述

public string PingUrl(string url)
{
    //创建HttpWeb请求
    var mWebRequest = (HttpWebRequest)WebRequest.Create(url);
    //创建HttpWeb相应
    var mWebResponse = (HttpWebResponse)mWebRequest.GetResponse();
    mWebResponse.Close();
    //获取响应状态码
    string code=mWebResponse.StatusCode.ToString();
    return code;
}

HttpWebRequest详解:HttpWebRequest是C#原生语法提供的实现了Http协议完整封装的类,可以实现任意类型的Http请求。

属性名称属性值
AllowAutoRedirect获取或设置一个值,该值指示请求是否应跟随重定向响应
CookieContainer获取或设置与此请求关联的cookie
Credentials获取或设置请求的身份验证信息
KeepAlive获取或设置一个值,该值指示是否与 Internet 资源建立持久性连接
MaximumAutomaticRedirections获取或设置请求将跟随的重定向的最大数目
Proxy获取或设置请求的代理信息
SendChunked获取或设置一个值,该值指示是否将数据分段发送到 Internet 资源
Timeout获取或设置请求的超时值
UserAgent获取或设置 User-agent HTTP 标头的值
ContentTypeHttp内容类型
Headers指定组成 HTTP 标头的名称/值对的集合
  1. 封装两个正则函数,判断用户输入的信息是否为正确的url地址,返回值设置为bool型即可。

在这里插入图片描述

/// <summary>
/// 判断一个字符串是否为url
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static bool IsChinese(string str)//
{	
    try
    {
        string Url = @"[\u4e00-\u9fa5]";
        return Regex.IsMatch(str, Url);
    }
    catch (Exception ex)
    {
        return false;
    }
}
public static bool IsWeb(string url)
{
    string Pattern = @"^((https|http|ftp|rtsp|mms)?:\/\/)[^\s]+";
    Regex r = new Regex(Pattern);
    Match m = r.Match(url);
    if (m.Success)
        return true;
    else
        return false;
}
  1. 在窗体双击开始检测按钮,生成对应的点击事件代码。

在这里插入图片描述

在这里插入图片描述

private void bt_ping_Click(object sender, EventArgs e){

}
  1. 定义一个多线程表达式。

在这里插入图片描述

private void bt_ping_Click(object sender, EventArgs e)
{
    int count = 0;
    CheckForIllegalCrossThreadCalls = false;
    new Thread(new ThreadStart(new Action(() =>
    {

    }))).Start();
}
  1. 定义一个变量记录行号条数,同时获取用户输入的域名数据并进行遍历。

在这里插入图片描述

 string rowNum = "";
 for (int i = 0; i < txt_url.Lines.Length; i++)
 {
     
 }
  1. 在遍历的过程中调用上述步骤的正则函数判断用户输入的域名是否合法。

在这里插入图片描述

  for (int i = 0; i < txt_url.Lines.Length; i++)
  {
      string url = txt_url.Lines[i].Trim();
      if (!string.IsNullOrEmpty(url))
      {
          if (!IsChinese(url))
          {
              if (!url.StartsWith("http"))
              {
                  url = string.Format("http://{0}", url);
              }
              if (IsWeb(url))
              {
              }
              else
              {
              }
          }
          else
          {
          }
      }
  }
  1. 通过try catch函数捕捉异常,同时将结果进行输出。

在这里插入图片描述

 if (IsWeb(url))
 {
     count++;
     rowNum = count < 10 ? string.Format("0{0}", count) : count.ToString();

     try
     {
         string ping_code = PingUrl(url);

         if (ping_code == "OK")
             txt_result.AppendText(string.Format("{0}:{1}————————>>{2}", rowNum, url, ping_code));
         else
             txt_error.AppendText(string.Format("{0}:{1}————————>>{2}", rowNum, url, ping_code));
     }
     catch (Exception ex)
     {
         txt_error.AppendText(string.Format("{0}:{1}————————>>{2}", rowNum, url, ex.Message));
         txt_error.AppendText("\r\n");
     }
 }
  1. 在遍历结束后将行号进行输出,汇总显示所检测的域名数量。

在这里插入图片描述

在这里插入图片描述

  1. 分别双击清空网址及清空结果按钮,生成对应的点击事件并将TextBox清空。

在这里插入图片描述

在这里插入图片描述

private void bt_clear_Click(object sender, EventArgs e)
{
    txt_result.Text = "";
    txt_error.Text = "";
}

private void bt_urllist_Click(object sender, EventArgs e)
{
    txt_url.Text = "";
}

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

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

相关文章

支付测试怎么做?要点有哪些?

目录 支付测试 避不开的 公司有没有支付牌照的问题&#xff1f; 国内有支付牌照的公司&#xff08;搞一张支付牌照 &#xff0c;不是钱多少的事&#xff09;总共 200 多家而已​编辑 没有支付牌照 公司就不可以支付么&#xff1f; 没有支付牌照 的公司的支付 做的什么支付&…

文档存储Elasticsearch系列--1 ES介绍

前言&#xff1a;Elasticsearch 也是使用 Java 编写的&#xff0c;它的内部使用 Lucene 做索引与搜索&#xff0c;支持结构化文档数据的分布式存储&#xff0c;并提供准实时的查询&#xff0c;全文检索&#xff0c;数据聚合&#xff1b; 1 为什么要使用ES: ES 本身存在哪些特性…

第二章---进程的描述与控制

&#x1f31e;欢迎来到操作系统的世界 &#x1f308;博客主页&#xff1a;卿云阁 &#x1f48c;欢迎关注&#x1f389;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f31f;本文由卿云阁原创&#xff01; &#x1f64f;作者水平很有限&#xff0c;如果发现错误&#xff…

打印机之——G3800故障维修

一 故障现象 5B00/1471/1472打印机进空气二 解决办法 2.1 5B00/1471/1472 解决办法——不需要软件清零,按键解决 步骤1 插上电源&#xff0c;打印机处于未开机状态&#xff0c;挡板处放入打印纸同时按住“停止”键和“电源”键&#xff0c;此时“电源”键亮起松开“停止”键…

python-opencv第六期:addWeighted函数详解

概要&#xff1a; 众嗦粥汁所周知&#xff0c;在如今计算机视觉&#xff08;Computer Version short for CV&#xff09;是人工智能与机器人技术发展的一个重大研究方向&#xff0c;而opencv作为一个专门为机器视觉编程提供技术与函数支持的第三方库&#xff0c;自然是一个需要…

Devops简介

Devops DevOps是一组过程、方法与系统的统称&#xff0c;用于促进开发、技术运营和**质量保障&#xff08;QA&#xff09;**部门之间的沟通、协作与整合。 其目的就是让开发人员和运维人员更好的沟通合作的文化、运动或惯例&#xff0c;通过自动化交付流程来使软件开发&#x…

牛客网C基础题目练习1

目录题目1&#xff1a;竞选社长题目2&#xff1a;最高分数题目3&#xff1a;判断是元音还是辅音题目4&#xff1a;判断是不是字母题目5&#xff1a;字母大小写转换题目1&#xff1a;竞选社长&#x1f4ad;法1&#xff1a;使用字符串数组代码实现&#xff1a;int main() {char a…

【按位考虑DP】代码源每日一题div1 2023.02.02 与

与 - 题目 - Daimayuan Online Judge这太酷了&#xff0c;很符合我对DP的想象这DP太妙了&#xff0c;我还没做过这种按位考虑DP的题题意&#xff1a;思路&#xff1a;首先看第二个条件&#xff0c;一个数与后面的那个数与了之后还是后面那个数&#xff0c;这说明什么我们按位考…

快速入门KMM和Compose Multiplatform

一、前言 最近才有空&#xff0c;想起来Compose-jb和kmm这2个框架&#xff0c;就来个快速入门指南吧。 什么是KMM (Kotlin Multiplatform Mobile) KMM用于简化跨平台开发&#xff0c;可以在Android和IOS之间共享通用的代码。 仅在使用各自平台能力的时候&#xff0c;才会去编…

解决前端组件渲染没更新数据问题

问题&#xff1a; 使用前端日期控件时 - 数据联动时数据绑定无效问题 现象&#xff1a; 选择A日期&#xff0c;想动态改变B日期数据&#xff0c;只有第一次选择时会动态改变B日期数据&#xff0c;第二次选择A日期时&#xff0c;B日期数据虽已改变&#xff0c;但是页面数据未改变…

电子邮件备份软件:Email Backup Wizard Crack

适用于所有用户的电子邮件备份软件 在您的计算机、台式机或硬盘驱动器上本地创建您的电子邮件帐户的备份。 下载并保存电子邮件以备后用。 如果您想备份和移动服务器电子邮件&#xff0c;请尽快获取备份工具。 通过简单直观的功能获得强大的结果 苹果系统邮箱备份向导 - 批量下…

C++ · 类和对象 · 03 | 深化理解

啊我摔倒了..有没有人扶我起来学习.... &#x1f471;个人主页&#xff1a;《CGod的个人主页》\color{Darkorange}{《CGod的个人主页》}《CGod的个人主页》交个朋友叭~ &#x1f492;个人社区&#xff1a;《编程成神技术交流社区》\color{Darkorange}{《编程成神技术交流社区》…

Python tkinter -- 第18章 画布控件之椭圆

**18.2.18 create_oval(bbox, options) 根据限定矩形 bbox 在画布上创建一个椭圆。 &#xff08;1&#xff09;bbox&#xff1a;定义要创建对象的边界(x1, y1, x2, y2) &#xff08;2&#xff09;options:创建椭圆的选项。选项的具体含义&#xff1a; 选项含义activedash当鼠标…

微信小程序+前端+天行数据垃圾图像识别接口API

文章目录 前言 步骤 1. 去到天行数据官网注册账号&#xff0c;去到接口的介绍网站 2. 去测试网站&#xff0c;先看看请求的格式 3. 小程序端我采用的是把网站上的url链接的网络图片转成base64编码后的形式作为传入参数&#xff0c;这里需要有点基础&#xff0c;因为只给上了…

JVM基础 - 类加载的过程

类加载的过程加载验证准备解析初始化使用卸载其中类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。在这五个阶段中&#xff0c;加载、验证、准备和初始化这四个阶段发生的顺序是确定的。而解析阶段则不一定&#xff0c;它在某些情况下可以在初始化阶段之后开始&…

RFID技术在生产企业的集成应用分析

RFID技术在生产企业的集成应用分析1.RFID的主要功能RFID自动识别功能RFID标签的主要核心部件是一个电子芯片&#xff0c;芯片中存储着能够识别目标的信息。RFID标签具有持久性、信息接收传播穿透性强、存储信息容量大、种类多等特点。有些RFID标签支持读写功能&#xff0c;目标…

CHAPTER 15 Mesos(一)

Mesos-优秀的集群资源调度平台15.1 Mesos简介15.2 Mesos安装与使用1. 安装1. 源码编译2. 软件源安装3. Docker方式安装2. 配置说明1. ZooKeepr2. Mesos3. Marathon3.访问Mesos图形界面4.访问Marathon图形界面1. 通过界面方式2. REST API方式15.3 原理与架构1. 架构2. 基本单元3…

CentOS7中安装Hadoop3详细步骤

目录 (一)新建一个虚拟机 (二)配置网络 (三)安装vim工具 (四)设置ssh免密登录 (五)设置时间同步 (六)修改主机名 1.方法一 2.方法二 (七)给主机文件添加IP名称映射 (八)安装JDK8 (九)安装Hadoop 1.打开Xftp&#xff0c;连接虚拟机&#xff0c;在/opt目录下新建两个…

[引擎开发] 现代图形API - metal篇

Metal是苹果开发的图形计算接口&#xff0c;它是在移动端出现的比较早的现代图形API。本文将更侧重于移动端&#xff08;IOS&#xff09;&#xff0c;对metal的API做一个大致的引入介绍。 Apple GPU概述 在我们对Metal进行介绍前&#xff0c;先来了解一下Apple GPU。 Apple GP…

Linux常用命令——printf命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) printf 格式化并输出结果 补充说明 printf命令格式化并输出结果到标准输出。 语法 printf(选项)(参数) --help&#xff1a;在线帮助&#xff1b; --version&#xff1a;显示版本信息。参数 输出格式&#x…