手把手教你如何基于C#制作一個網(wǎng)址檢測工具
前言
此文主要基于C#制作一個網(wǎng)址檢測工具。隨著時間推移以及公司人員的變動,手頭所負(fù)責(zé)的項目也越來越多,對網(wǎng)站運行狀況的管理也是一件讓人十分頭疼的事,秉持著偷懶是第一生產(chǎn)力的原則,制作一個工具對網(wǎng)址一鍵監(jiān)測。

實現(xiàn)流程
1、創(chuàng)建項目
打開Visual Studio,右側(cè)選擇創(chuàng)建新項目。

搜索框輸入winform,選擇windows窗體應(yīng)用,填寫對應(yīng)的保存路徑點擊下一步,創(chuàng)建成功后如下圖,會有一個默認(rèn)打開的Form窗體。


2、頁面設(shè)計
準(zhǔn)備對應(yīng)的圖標(biāo)素材,通過Icon以及窗體Text屬性修改窗體圖標(biāo)以及標(biāo)題顯示;同時配置StartPosition屬性值為CenterScreen,讓窗體默認(rèn)居中顯示。


在左側(cè)工具箱拖拽TextBox以及Button控件,實現(xiàn)界面大致布局。


單擊窗體上TextBox的小箭頭,設(shè)置允許TextBox置于顯示多行文本的模式。

Button控件照葫蘆畫瓢通過設(shè)置其Text屬性修改按鈕文本顯示。


3、功能實現(xiàn)
封裝http請求函數(shù),用于創(chuàng)建http請求及響應(yīng)code。

public string PingUrl(string url)
{
//創(chuàng)建HttpWeb請求
var mWebRequest = (HttpWebRequest)WebRequest.Create(url);
//創(chuàng)建HttpWeb相應(yīng)
var mWebResponse = (HttpWebResponse)mWebRequest.GetResponse();
mWebResponse.Close();
//獲取響應(yīng)狀態(tài)碼
string code=mWebResponse.StatusCode.ToString();
return code;
}
HttpWebRequest詳解:HttpWebRequest是C#原生語法提供的實現(xiàn)了Http協(xié)議完整封裝的類,可以實現(xiàn)任意類型的Http請求。
| 屬性名稱 | 屬性值 |
|---|---|
| AllowAutoRedirect | 獲取或設(shè)置一個值,該值指示請求是否應(yīng)跟隨重定向響應(yīng) |
| CookieContainer | 獲取或設(shè)置與此請求關(guān)聯(lián)的cookie |
| Credentials | 獲取或設(shè)置請求的身份驗證信息 |
| KeepAlive | 獲取或設(shè)置一個值,該值指示是否與 Internet 資源建立持久性連接 |
| MaximumAutomaticRedirections | 獲取或設(shè)置請求將跟隨的重定向的最大數(shù)目 |
| Proxy | 獲取或設(shè)置請求的代理信息 |
| SendChunked | 獲取或設(shè)置一個值,該值指示是否將數(shù)據(jù)分段發(fā)送到 Internet 資源 |
| Timeout | 獲取或設(shè)置請求的超時值 |
| UserAgent | 獲取或設(shè)置 User-agent HTTP 標(biāo)頭的值 |
| ContentType | Http內(nèi)容類型 |
| Headers | 指定組成 HTTP 標(biāo)頭的名稱/值對的集合 |
封裝兩個正則函數(shù),判斷用戶輸入的信息是否為正確的url地址,返回值設(shè)置為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;
}
在窗體雙擊開始檢測按鈕,生成對應(yīng)的點擊事件代碼。


private void bt_ping_Click(object sender, EventArgs e){
}
定義一個多線程表達(dá)式。

private void bt_ping_Click(object sender, EventArgs e)
{
int count = 0;
CheckForIllegalCrossThreadCalls = false;
new Thread(new ThreadStart(new Action(() =>
{
}))).Start();
}
定義一個變量記錄行號條數(shù),同時獲取用戶輸入的域名數(shù)據(jù)并進(jìn)行遍歷。

string rowNum = "";
for (int i = 0; i < txt_url.Lines.Length; i++)
{
}
在遍歷的過程中調(diào)用上述步驟的正則函數(shù)判斷用戶輸入的域名是否合法。

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函數(shù)捕捉異常,同時將結(jié)果進(jìn)行輸出。

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");
}
}
在遍歷結(jié)束后將行號進(jìn)行輸出,匯總顯示所檢測的域名數(shù)量。


分別雙擊清空網(wǎng)址及清空結(jié)果按鈕,生成對應(yīng)的點擊事件并將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 = "";
}
總結(jié)
到此這篇關(guān)于如何基于C#制作一個網(wǎng)址檢測工具的文章就介紹到這了,更多相關(guān)C#制作網(wǎng)址檢測工具內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
CefSharp如何進(jìn)行頁面的縮放(Ctrl+滾輪)
CefSharp簡單來說就是一款.Net編寫的瀏覽器包,本文主要介紹了CefSharp如何進(jìn)行頁面的縮放,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-06-06
C#調(diào)用百度翻譯API實現(xiàn)一個翻譯功能
一直喜歡用Google Translate API進(jìn)行在線翻譯,但是服務(wù)越來越慢這篇文章,所以只能換一個了,主要給大家介紹了關(guān)于C#調(diào)用百度翻譯API實現(xiàn)一個翻譯功能的相關(guān)資料,需要的朋友可以參考下2021-06-06

