程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> 使用.NET實現IP切換器

使用.NET實現IP切換器

編輯:關於C#

1. 引言

經常在公司、客戶和家裡奔波,切換IP是天天要做的事情,所以有心開發一個小的應用程序,來實現IP地址的快捷切換。既然有了思路就著手來做,我首先想到的是應用netsh.exe工具來實現,所以配置一個批處理文件來實現netsh.exe命令的執行,然後使用.NET框架來調用bat文件即可大功告成。話已至此,馬上行動。

2. 基本原理

根據上述解決思路,我的小系統,定名為《Anytao.IpHelper》的解決方案如下:

以批處理文件加載netsh.exe命令,實現IP加載;

以.NET的Process方法,實現對外部應用的調用;

附帶進度控制和文件檢索功能。

因此,有必要對系統運行的原理進行簡單的梳理,來龍去脈,揭開本質。

2.1. netsh工具簡介

長篇大論的netsh命令介紹,在此就不特別介紹了,百度上隨便就可以找到更加詳細的netsh命令手冊,可以耗你一天的功夫來研究,本文既然著眼於應用,就從實際的招式來闡述,詳細的武功秘籍留待看官量身定做,此處只提供參考:netsh命令詳解、netsh命令使用。

在本文中,請參考以下步驟來實現你的netsh命令處理器:

打開記事本,輸入以下信息:

@echo Anytao is switching your ip now.
@echo off
netsh interface ip set address 本地連接 static 172.1.1.226 255.0.0.0 172.30.7.254 1
netsh interface ip set dns 本地連接 static 200.121.5.1
echo ...www.anytao.com...
Echo Congratulations, done.
pause

注意:按照以上格式輸入您的IP、子網掩碼、默認網關和DNS服務器地址;如果是英文版操作系統,將“本地連接”改為“local Area Connection ”。

另存該文本為批處理文件,在此另存為:home.bat。

點擊該批處理文件,即可將您的IP更新為上述值。

2.2. Process方法簡介

Process方法,位於System.Diagnostics命名空間。MSDN的定義為:Process 組件提供對正在計算機上運行的進程的訪問。對於啟動、停止、控制和監視應用程序等任務,Process 組件是很有用的工具。使用 Process 組件,可以獲取正在運行的進程的列表,或者可以啟動新的進程。Process 組件用於訪問系統進程。初始化 Process 組件後,可使用該組件來獲取有關當前運行的進程的信息。此類信息包括線程集、加載的模塊(.dll 和 .exe 文件)和性能信息(如進程當前使用的內存量)。因此,以Process方法來打開外部批處理文件是托管環境下值得推薦的方法。

當然,以Process方法來打開外部程序,並不是唯一的辦法,最簡單的莫過於調用WinAPI程序來實現,當然這又牽扯到非托管代碼的范疇,我們就不再多羅嗦了。

我的另一篇拙作《在WinForm應用程序中打開Url》中,也有相關的論述,具體的實現見代碼部分的分析。

2.3. 基本的系統結構如下:

3. 實現方法:

3.1 創建Windows Form 應用程序,設置程序名稱為Anytao.IPHelper,並向窗體文件中拖入一個ComboBox和一個按鈕控件,分別命名為:cbbIP和btnIPConfig,如下圖所示:

3.2 雙擊btnIpConfig按鈕,實現其Click事件,如下,具體代碼見注釋:

private void btnIpconfig_Click(object sender, EventArgs e)
{
try
{
//使用Process方法加載外部應用
Process myProcess = new Process();
myProcess.StartInfo.FileName = Application.StartupPath + @"\config\" + cbbIP.SelectedItem.ToString() + ".bat";
MessageBox.Show(myProcess.StartInfo.FileName);
myProcess.StartInfo.UseShellExecute = false;
myProcess.StartInfo.RedirectStandardOutput = true;
myProcess.Start();
myProcess.WaitForExit();
}
catch (FileNotFoundException ex)
{
MessageBox.Show(ex.Message);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

3.3 當然我們還要實現程序加載時的獲取文件目錄的操作,如下:

private void frmMain_Load(object sender, EventArgs e)
{
//將配置文件加載到下拉框中
string path = Application.StartupPath + @"\config\";
if (Directory.Exists(path))
{
DirectoryInfo dirinfo = new DirectoryInfo(path);
foreach (FileInfo fi in dirinfo.GetFiles())
{
cbbIP.Items.Add(Path.GetFileNameWithoutExtension(fi.FullName));
}
}
}

3.4 當然,按照上述方法,將配置好的netsh.exe批處理文件,放在目標位置後,你就可以實現自己的IpHelper了。

3.5 恭喜你,簡單的IPHelper已經實現,運行你的程序,享受快速配置IP帶來的便捷吧。

4. 系統展望

Anytao.IpHelper,只是點燃了一個快速應用的火苗,我在平時的工作中也享受了這種方便的痛快,我的Emma的機子裡也必備了IpHelper,就好像是我每天帶給她的愛護和關心。嘿嘿,寫代碼的也可以用這種方式,哄哄家裡的娘子軍嘛,讓我們的程序人生更加和諧。

言歸正傳,IpHelper只是個代步的工具,還有更多的思想和設計可以融會到裡面做為充實,我將會再以後的時間逐漸完善以下幾個方面:

設計Ip、IpConfig類,來以面向對象方式完善系統架構;

增加Ip錄入功能,實現動態增加Ip選項的能力,而不需要手工實現;

更多桌面網絡管理平台融合。

5. 結束語

本文的主要目的是,以一個示例為切入點,講明白如何在托管環境中以Process方法來加載外部應用,使用Process可以方便的在你的應用中打開網站、郵件、外部程序、腳本等,因此是值得學習的東西。

因為,以開發為基礎的文章是第一次嘗試,不知請大家見笑,小小工具希望給您的生活帶來方便。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved