網路程式設計-顯示資訊、下載檔案
隨著雲端計算時代的到來,任何一種開發和程式設計都會與因特網有關係。網路辦公、手機遊戲、線上電影、電子商務、電子政務、電子郵件、遠端控制,以及其他各種大資料應用,都是網路程式設計的實際應用。
.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 = "下載成功";
}
}