手把手教你如何基于C#制作一个网址检测工具

 更新时间:2023年02月16日 09:19:42   作者:摔跤猫子  
这篇文章主要给大家介绍了关于如何基于C#制作一个网址检测工具的相关资料,文中通过图文以及实例代码介绍的非常详细,对大家学习或者使用C#具有一定的参考学习价值,需要的朋友可以参考下

前言

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

实现流程

1、创建项目

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

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

2、页面设计

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

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

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

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

3、功能实现

封装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 标头的名称/值对的集合
封装两个正则函数,判断用户输入的信息是否为正确的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;
}
在窗体双击开始检测按钮,生成对应的点击事件代码。

private void bt_ping_Click(object sender, EventArgs e){

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

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

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

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

  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
          {
          }
      }
  }
通过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");
     }
 }
在遍历结束后将行号进行输出,汇总显示所检测的域名数量。

分别双击清空网址及清空结果按钮,生成对应的点击事件并将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 = "";
}

 总结

到此这篇关于如何基于C#制作一个网址检测工具的文章就介绍到这了,更多相关C#制作网址检测工具内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#实现六大设计原则之依赖倒置原则

    C#实现六大设计原则之依赖倒置原则

    这篇文章介绍了C#实现六大设计原则之依赖倒置原则的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • unity置灰处理的实现

    unity置灰处理的实现

    本文主要介绍了unity置灰处理的实现,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2021-07-07
  • C#判断多个文本框是否为空的方法

    C#判断多个文本框是否为空的方法

    这篇文章主要介绍了C#判断多个文本框是否为空的方法,可实现对多个文本框的遍历、判断及提示等功能,需要的朋友可以参考下
    2015-06-06
  • 浅析C#中结构与类的区别

    浅析C#中结构与类的区别

    本文主要对C#结构与类的区别进行简要分析,文中举了实例,便于理解,具有很好的参考价值,需要的朋友一起来看下吧
    2016-12-12
  • C#中的Task.WaitAll和Task.WaitAny方法介绍

    C#中的Task.WaitAll和Task.WaitAny方法介绍

    这篇文章介绍了C#中的Task.WaitAll和Task.WaitAny方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • C#中的匿名方法实例解析

    C#中的匿名方法实例解析

    这篇文章主要介绍了C#中的匿名方法,包括其由来、定义及用法等,需要的朋友可以参考下
    2014-09-09
  • DevExpress之ChartControl的SeriesTemplate实例

    DevExpress之ChartControl的SeriesTemplate实例

    这篇文章主要介绍了DevExpress之ChartControl的SeriesTemplate用法实例,实现了饼状Series百分比显示的效果,具有一定的参考借鉴价值,需要的朋友可以参考下
    2014-10-10
  • C#带你玩扫雷(附源码)

    C#带你玩扫雷(附源码)

    这篇文章主要介绍了C#带你玩扫雷(附源码),详细的介绍实现扫雷的方法,具体一定的参考价值,有兴趣的可以了解一下
    2017-10-10
  • C# Winform窗口之间传值的多种方法浅析

    C# Winform窗口之间传值的多种方法浅析

    这篇文章主要介绍了C# Winform窗口之间传值的多种方法浅析,本文起讲解了通过构造器传值、通过属性传递、通过事件携带参数传递等方法,需要的朋友可以参考下
    2015-04-04
  • C#引用访问权限分析

    C#引用访问权限分析

    这篇文章主要介绍了C#引用访问权限问题,对比C#与Java实例分析了C#在引入引用访问权限特性之后的具体用法,具有一定的参考借鉴价值,需要的朋友可以参考下
    2014-11-11

最新评论