遠程終端IP地址查詢助手

最近配置網橋,如果忘了網橋的地址,是一件很麻煩的事情。總是要試每個網橋的地址。想着開發一個查詢IP助手,可以省很多的事,就試了試了試網絡編程和程序打包的方法,花了一天時間做出來一個IP查詢助手,速度不是很快,但也算時大大提高了效率。總結一下開發過程。

首先做了一個很low的界面,C#也做不出多麼漂亮的界面。然後配上學校的logo,看上去高大上一些。

湊合看吧,這個不重要,能用就OK了。

程序很簡單,直接上程序吧。會C#開發語言的一眼就能看明白,就不細細說整個過程了。前前後後試了3種網絡連接方式,收益匪淺。

1.就是TCP連接方式,最常用的方式。

 
TcpClient tcpclient;  
tcpclient=new TcpClient();  
tcpclient.Connect(ipadress,port);
if(tcpclient.Connented){}  

2.比較複雜一些,沒用過,覺得高大上了。

string server = textBox1.Text;
Socket socket = null;//實例化Socket對象,並初始化 
IPHostEntry iphostentry = null;//實例化IPHostEntry對象,並初始化 
iphostentry = Dns.GetHostEntry(server);//獲得主機信息</span>  

foreach(IPAddress addressin iphostentry.AddressList) 
{
    //使用指定的IP地址和端口號實例化IPEndPoint對象 
    IPEndPoint IPEPoint = new IPEndPoint(address, port);
    //使用Socket的構造函數實例化一個Socket對象,以便用來連接遠程主機
     Socket newSocket = new Socket(IPEndPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
     newSocket.Connect(IPEPoint);</span>  
    if(newSocket.Connected){}
}

這兩種方法不可以快速查找,太慢了,還是ping快一些。

還用到的是IP地址的分割,分個提取,這個還是比較有用的,以後可以用於字符串的分割。

string result="":
string IPstr="172.0.0.1";
string [] IPstrarr=IPstr.Split('.');
for(int i=0;i<IPstrarr.Length;i++)
{
     result+=IPstrarr[i].Tostring()+" ";
}
result=result.Trim();

下面直接上主程序吧。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net.Sockets;
using System.Net;
using System.Net.NetworkInformation;
namespace IP地址查詢軟件
{
    public partial class Form1 : Form
    {
        IPAddress ipaddress;
        TcpClient tcpClient;
        Ping pingSender = new Ping();
        public Form1()
        {
           InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string IPstr;
            string[] IPstrarr;
            string result="";
            string _ComputName = System.Net.Dns.GetHostName();
            System.Net.IPAddress[] _IPList = Dns.GetHostAddresses(_ComputName);
            for (int i = 0; i != _IPList.Length; i++)
            {
                if (_IPList[i].AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
                {
                    textBox1.AppendText(_IPList[i].ToString());

                }
            }
            IPstr = _IPList[_IPList.Length-1].ToString();
            //IPstr = textBox1.Text;
            //textBox1.AppendText(IPstr);
            IPstrarr = IPstr.Split('.');
            for (int j = 0; j < IPstrarr.Length; j++)
            {
                result += IPstrarr[j].ToString();
            }
            //textBox1.AppendText(result);
            int d;
            int d1 = int.Parse(IPstrarr[3]);
            int a = int.Parse(IPstrarr[0]);
            int b = int.Parse(IPstrarr[1]);
            int c = int.Parse(IPstrarr[2]);
            //string d1;
            for (;a<255;a++)
            {
                for(;b<255;b++)
                {
                    for(;c<255;c++)
                    {
                       for(d=0;d<255;d++)
                        {
                            //d1 = Convert.ToString(d);
                            textBox2.AppendText(a + ".");
                            textBox2.AppendText(b + ".");
                            textBox2.AppendText(c + "." + d);
                            //textBox2.AppendText(d1);
                            //textBox3.AppendText("" + Convert.ToString(Port));
                            tcpClient = new TcpClient();
                            ipaddress = IPAddress.Parse(textBox2.Text);
                            try
                            {
                                //tcpClient.Connect(ipaddress, Port);
                                PingReply reply = pingSender.Send(ipaddress, 1);
                                if (reply.Status == IPStatus.Success)
                                {
                                    string ipaddress1 = Convert.ToString(ipaddress);
                                    if(d!=d1)
                                    {
                                        textBox3.AppendText(ipaddress1);
                                        tcpClient.Close();
                                        button1.Enabled = false;
                                        button1.Text = "查詢完成";
                                        break;
                                    }
                                    
                                    textBox2.Clear();
                                    
                                }
                                else
                                {
                                    textBox2.Clear();
                                    //textBox3.Clear();
                                }

                            }
                            catch
                            {
                                textBox2.Clear();
                                //textBox3.Clear();
                            }
                            if (!button1.Enabled)
                            {
                                break;
                            }
                        }
                        if (!button1.Enabled)
                        {
                            break;
                        }

                    }
                    if (!button1.Enabled)
                    {
                        break;
                    }
                }
                if (!button1.Enabled)
                {
                    break;
                }
            }
        }
    }
}


下面主要說一下程序打包發佈過程,Qt中說了Qt打包發佈的過程,不過方法還是大大不同的。有興趣的可以看看。
http://blog.csdn.net/spw_1201/article/details/62418691

如果你的VS沒有Visual Studio Installer,先去下載安裝一個,貼上地址。安裝過程,看不懂的多看幾遍就會了。

https://marketplace.visualstudio.com/items?itemName=VisualStudioProductTeam.MicrosoftVisualStudio2015InstallerProjects

1、新建一個Windows窗體應用程序,例如項目名爲IP查詢助手。新建的時候不要忘了創建解決方案。

2、在monitor解決方案上“右擊”—— “添加”——“新建項目”,選擇“其他類型項目”——“安裝和部署”——“安裝項目”,並命名爲“IP查詢助手”,

確定後顯示如下圖所示

3、添加必須文件: 在'應用程序文件夾'上右鍵,添加應用程序必須的配置文件(如果有的話),以及圖標(桌面顯示的圖標,卸載程序的圖標...).還需要添加一個系統的exe文件msiexec.exe(一般在c:\WINNT\System32目錄下),用於卸載程序.

(1)在左邊的“應用程序文件夾”上右擊“添加”——“項目輸出”,選擇monitor項目

(2)在左邊的“應用程序文件夾”上右擊“添加”——“文件”,選擇“c:"windows"system32"msiexec.exe”文件。

(3)在左邊的“應用程序文件夾”上右擊“添加”——“文件”,然後選擇幾個*.ico的圖標文件

完後顯示如下

4、創建快捷方式

(1)”程序菜單快捷方式“,命名爲IP助手,並在其的屬性欄中爲其“Icon”選擇剛纔導入的圖標。並將其拖動到“用戶的”程序”菜單”文件下。

(2)桌面快捷方式:步驟同1。將其拖動到“用戶桌面”下

(3)卸載快捷方式:在msiexec.exe上右擊“創建msiexec.exe 的快捷方式”,並命名爲“卸載Ip”。將其拖動到“用戶的”程序”菜單”文件下,當然也可放在桌面。

查看IP查詢助手部署項目屬性,

屬性值中有“{4EA38E9B-C4BF-4897-B095-E30160A27245}”類似字樣,選中它“複製”。

再次點擊你的卸載快捷方式名稱,“卸載monitor”,再到右下角屬性欄中,有一個叫Arguments的屬性欄,在屬性欄中首先填入“/x”後加一個空格,再“粘貼”,將ProductCode的屬性值COPY至此。

5、打包.net framework

(可以默認)選擇IP查詢助手項目的屬性,在對話框中選擇“系統必備”,然後在彈出的對話框中選擇“從組件供應商網站下載必備組件”,確定。

6、生成

在IP查詢助手項目上右擊選擇“生成”,則打包成功,將在你的解決方案文件夾生成一個IP查詢助手的文件夾,安裝文件就在此目錄下。


最後生成以後到Debug中找到exe文件就可以安裝了,也可以像QQ一樣拷貝給別人安裝,裝一波。

生成的快捷方式,是不是高大上。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章