1. 程式人生 > >網路程式設計-顯示資訊、下載檔案

網路程式設計-顯示資訊、下載檔案

隨著雲端計算時代的到來,任何一種開發和程式設計都會與因特網有關係。網路辦公、手機遊戲、線上電影、電子商務、電子政務、電子郵件、遠端控制,以及其他各種大資料應用,都是網路程式設計的實際應用。

.NetFramework的System.Net名稱空間為各種網路協議提供了簡單的程式設計介面,封裝了幾個重要的用於網路通訊的類。

1、IPAddress類

提供了對IP地址的轉換、處理等功能,Parse方法可將IP地址字串轉換為IPAddress例項

2、Dns類

Dns類實現域名解析功能,即把主機域名解析為IP地址,或者把IP地址解析為主機名。

GetHostAddresses():提取指定主機的IP地址,返回一個IPAddrsss型別的陣列

GetHostName() :返回主機名

3、IPHostEntry類

包含了Internet主機的相關資訊。常用屬性有兩個:一個是AddressList屬性,作用是獲取或設定與主機關聯的IP地址列表,這時一個IPAdress型別的陣列,包含了指定主機的所有IP地址:HostName屬性則包含了伺服器的主機名。

在Dns類中,通過GetHostEntry可以獲取IPHostEntry物件,就可以獲取本機或遠端主機的相關IP地址。

4、IPEndPoint類

TCP/IP使用一個IP地址和一個埠號來唯一標識裝置和服務,IP地址標識網路上的裝置;埠號標識的特定服務。IP地址和埠號的組合稱為端點。

建構函式:public IPEndPoint(IPAddress, int)第一個引數是IP地址,第二個引數指定埠號

用一個小程式來學習一下網路程式設計的基本操作。

單擊本機資訊按鈕可以顯示主機名及相關的IP地址,單擊顯示伺服器資訊按鈕可以顯示在文字框中輸入的伺服器的IP地址資訊。

執行結果:

原始碼:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Collections;
using System.Net;

namespace Test1_2
{
    public partial class Test1_2 : Form
    {
        public Test1_2()
        {
            InitializeComponent();

        }
  
        private void Test1_2_Load(object sender, EventArgs e)
        {
            
        }

        private void bntDouble_Click(object sender, EventArgs e)
        {
            listResult.Items.Clear();

            string name = Dns.GetHostName();                        //獲取本地主機名
            listResult.Items.Add("本機主機名: " + name);

            IPHostEntry me = Dns.GetHostEntry(name);                //獲取本地IP地址資訊
            listResult.Items.Add("本機所有IP地址");

            foreach (IPAddress ip in me.AddressList)                //輸出本地IP地址資訊
            {
                listResult.Items.Add(ip);
            }

        }

        private void button1_Click(object sender, EventArgs e)
        {
            listResult.Items.Clear();
            //將主機名或IP地址解析為IPHostEntry的例項
            IPHostEntry host = Dns.GetHostEntry(textRotate.Text);   
            IPAddress[] rip = host.AddressList;                      //獲取IP地址列表

            listResult.Items.Add(host.HostName);                     //獲取主機的DNS名
            listResult.Items.AddRange(rip);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            listResult.Items.Clear();

            IPAddress ip = IPAddress.Parse("127.0.0.1");                    //將字串解析為IP地址
            IPEndPoint p = new IPEndPoint(ip, 80);                          //建立通訊端點

            listResult.Items.Add("TCP端點是: " + p.ToString());
            listResult.Items.Add("該端點IP地址是: " + p.Address);
            listResult.Items.Add("該端點IP地址族是: " + p.AddressFamily);
            listResult.Items.Add("TCP最大埠號: " + IPEndPoint.MaxPort);
            listResult.Items.Add("TCP最小埠號: " + IPEndPoint.MinPort);

        }
    }
}

5、WebClien類

該類提供一系列的成員方法,可以傳送資料給指定URI的Web伺服器,或者從指定URI的Web伺服器獲取資料資訊,WebClient類的主要屬性是BaseAddress,該屬性定義了客戶端發出的請求的基地址。可用於上傳與下載檔案。

DownLoadFile():從伺服器將資料下載到本地檔案

學習一個例項:將檔案logo_ong.png下載到本地磁碟。這個檔案的URI是 http://img3.cache.netease.com/www/logo/logo_png.png

執行結果:

原始碼:

private void bntDouble_Click(object sender, EventArgs e)
{
    WebClient client = new WebClient();
    if (dlgSaveFile.ShowDialog() == DialogResult.OK)
    {
        string filename = dlgSaveFile.FileName;
        client.DownloadFile(textUri.Text, filename);
        lblShow.Text = "下載成功";
    }
}