2-1 .NET Framework在網路程式設計上的支援

Download Report

Transcript 2-1 .NET Framework在網路程式設計上的支援

第二章 基本網路程式設計
2-1 .NET FRAMEWORK在網路程式設
計上的支援
.NET Framework命名空間
•
•
•
•
•
•
•
•
System.Net
System.Net.Configuration
System.Net.Mail
System.Net.Mime
System.Net.NetworkInformation
System.Net.PeerToPeer
System.Net.Security
System.Net.Sockets
System.Net


包含許多的類別,支援許多網路上找得到
的通訊協定。
提供簡單的程式設計介面,讓程式設計師
可以用來發展網路應用程式。
System.Net.Configuration

讓應用程式能夠使用以程式設計的方式存
取及更新System.Net命名空間之組態所設
定的類別。
System.Net.Mail

用來傳送電子郵件給SMTP(Simple Mail
Transfer Protocol)電子郵件伺服器。
System.Net.Mime

儲存用來表示Multipurpose Internet Mail
Exchange (MIME)標頭的型別。
System.Net.NetworkInformation


提供網路流量資料、網路位址資訊和本機
電腦位址變更告知的存取方式。
實作 Ping 公用程式的類別:

可以使用 Ping 和相關的類別,檢查是否可以
透過網路到達某部電腦。
System.Net.Security

提供網路主機與網路主之間安全的網路資
料流通訊。
System.Net.Sockets

提供Windows Sockets (Winsock) 介面的
Managed 實作,以提供TCP/IP的通訊協定
應用程式的開發。
典型的網路服務程式架構
TCP 網路程式架構(.Net)
TcpClient
TcpListener
Start
AcceptTcpClient
Request
Connect
Read / Write
Read / Write
Stop
Close
客戶端的網路服務介面:TcpClient


定義在System.Net.Sockets的命名空間。
建立客戶端的網路服務介面,以連線至網
路伺服端。
TcpClient類別常用的方法

BeginConnect


Close


關閉TCP網路連線
Connect


開啟伺服端的非同步連接之要求(不會被Block)
使用指定主機位址(或名稱)與通訊阜編號來連
線至伺服端
EndConnect

關閉伺服端的非同步連線要求
TcpClient類別常用的方法

GetStream

使用NetworkStream類別來傳送與接收資料
TcpClient類別建立服務介面
Dim MyTcpClient As New TcpClient
MyTcpClient.Connect(IP位址或主機名稱, 通
訊埠編號)
TcpClient類別接收與傳送資料
'使用NetworkStream類別來接收與傳送資料
Dim ns As NetworkStream =
TcpClient.GetStream
'將要傳送的資料編碼
Dim data As Byte() =
Encoding.ASCII.GetBytes(要傳送資料--in
char())
'傳送資料
offset
ns.Write(data, 0, data.Length)
伺服端的網路介面:TcpListener


定義在System.Net.Sockets的命名空間。
負責接聽來自客戶端的連接。
TcpListener類別常用的方法

AcceptSocket


AcceptTcpClient


接受客戶端連線的要求
BeginAcceptSocket


接受客戶端連接的要求
開始非同步方式接受客戶端Socket連線的要求
BeginAcceptClient

開始非同步方式接受客戶端TcpClient連線的要
求
TcpListener類別常用的方法

EndAcceptSocket


EndAcceptTcpClient


以非同步方式接受客戶端連線的要求,並建立
新的Socket類別來處理與客戶端的通訊
以非同步方式接受客戶端連線的要求,並建立
新的TcpClient類別來處理與客戶端的通訊
Pending

判斷是否有存在的連接
TcpListener類別常用的方法

Start


啟動接聽客戶端連線的要求
Stop

停止接聽客戶端連線的要求
TcpListener類別-建立伺服端
接聽客戶端IP Address與通訊埠
'建立TcpListener類別
Dim MyTcplistener As New
TcpListener(IPAddress類別, 通訊埠編號)
TcpListener類別-伺服端接收資料
'取得客戶端的TcpClient所傳送的資料
Dim ns As NetworkStream = TcpClient.GetStream
Dim data(接收資料緩衝區大小) As Byte
'讀入傳進的資料的長度
Dim BytesRead As Integer = ns.Read(data, 0, _
CInt(接收資料緩衝區大小))
'將Byte型態轉換為String並顯示在TextBox控制項
TextBox1.Text = Encoding.ASCII.GetString(data, 0,
BytesRead)
第二章 基本網路程式設計
2-2 分析網路IP位址
NetworkInterface類別


定義在System.Net.NetworkInformation命
名空間下的類別
用來取得網路介面的組態與統計資訊。
NetworkInterface類別常用的方法

GetAllNetworkInterfaces


GetIPProperties


取得網路介面的所有組態
GetIPv4Statistics


取得本機所有的網路介面
取得IPv4的統計資料
GetIsNetworkAvailable

取得是否有任何網路連接可以使用
NetworkInterface類別常用的方法

GetPhysicalAddress


取得介面卡的MAC位址
Supports

取得是否支援指定的通訊協定
IPAddress類別



定義在System.Net命名空間。
用來提供網路通訊協定的IP位址。
AddressFamily:


IPv4: InterNetwork
IPv6: InterNetworkV6
IPAddress類別常用的方法

GetAddressBytes


IsLoopback


取得指定的IP位址是否為回送位址
Parse


取得IP Address陣列的副本
將IP位址字串轉換為IPAddress
TryParse

判斷字串是否為合法的IP位址
IPAddress類別常用的欄位

Any


Broadcast


提供IP廣播位址
IPv6Any


伺服端的網路介面必須接聽所有客戶端的活動
伺服端的IPv6網路介面必須接聽所有客戶端的活動
IPv6Loopback

提供lPv6回送位址
IPAddress類別常用的欄位

IPv6None


Loopback


提供IPv6位址,表示不可使用的網路服務介面
提供IP回送位址
None

提供IP位址,表示不可使用的網路服務介面
IPInterfaceProperties類別


定義於System.Net.NetworkInformation命
名空間。
取得網路卡上的網路資訊:


Gatewary
DNS
IPGlobalProperties類別

取得網路客戶端與伺服端連接之後,網路
介面所在的電腦主機與伺服端它們之間的
相關資訊



主機名稱
網域名稱
TcpConnectionInformation類別的State屬性,
可找出目前TCP連線的狀態。
IPEndPoint類別



定義在System.Net的命名空間。
處理IP位址及服務所需要的通訊埠編號資
訊。
網路端點以IP位址與通訊埠編號來呈現。
IPEndPoint類別常用的方法

Create


從Socket端建立端點
Serialize

將網路端點的資訊改成SocketAddress類別
IPEndPoint類別常用屬性與欄位

Address


AddressFamily


取得IP位址家族
Port


取得或設定IP位址
取得或設定通訊阜的編號
MaxPort, MinPort

設定通訊阜編號的最大(小)值
第二章 基本網路程式設計
2-3偵測遠端主機的狀態
Ping類別




定義在System.Net.NetworkInformation命
名空間。
偵測伺服器主機的IP是否存在於網路上。
傳送ICMP回應訊息給遠端電腦,並從遠端
電腦接收對應的ICMP回應回覆訊息。
ICMP可能被防火牆阻擋。
Ping類別常用的方法

Send


SendAsync


傳送ICMP回應訊息給遠端電腦, 並從遠端電腦
接收到對應的ICMP回應回覆訊息
以非同步方式將回應訊息給電腦,並從電腦接收
到對應的ICMP回應回覆訊息
SendAsyncCancel

取消回應訊息之所有非同步要求,並且接收對應
的ICMP回應回覆訊息
PingReply類別常用的屬性

Address


Buffer


取得ICMP回應回復訊息中所收到的資料緩衝區
Options


取得主機位址
取得ICMP回應要求的回覆之選項
RoundTripTime

取得ICMP回應回覆訊息的毫秒數
PingReply類別常用的屬性

Status

取得ICMP回應回覆訊息的狀態
PingOptions類別常用的屬性

DontFragment


控制是否要分割傳送到遠端主機的資料
Ttl

設定或取得路由節點的數目,預設值為128,
假如該直到達零,則會將封包是為無法傳遞而
丟棄
第二章 基本網路程式設計
2-4取得主機名稱與位址的關係
追蹤DNS伺服器的回應
Dns類別




DNS服務。
定義在System.Net 命名空間。
GetHostName:取得本機電腦的主機名稱。
IPHostEntry 類別:儲存網路主機名稱解析
後的IP位址。
第二章 基本網路程式設計
2-5 URL與URI
網址URL



Uniform Resource Locator。
資源定位器。
目的:

存取網路上特定的資源,不管是內部區域網路
或廣域的網際網路。
URL與網路通訊協定

根據特定服務資源,針對特定服務,制定
專屬的「URL」通訊格式,即「通訊協定」。
URL與通訊協定
說明
ftp://xxx.xxx.com
http://xxx.xxx.com
mailto:[email protected]
bbs://xxx.xxx.com
news.hinet.net
檔案傳輸協定
超文字傳輸協定(HTML)
郵件傳輸協定
電子佈告欄傳輸協定
新聞群組
URL的格式





通訊協定://主機位址/虛擬目錄/資源?參
數
http://www.codes.com.tw/index.html
http:// 218.210.8.100/index.html
http://www.codes.com.tw/Product/ItemN
o?T61
http://218.210.8.100/Product/ItemNo?T6
1
URI



Uniform Resource Identifier。
一致性資源識別碼。
透過「URI」的通訊協定,可將網路指向任
何IP網址,任何連結、任何檔案…等的任何
資訊。
URI的格式


通訊協定://主機名稱:通訊埠編號/目錄路
徑/檔案名稱(參數)
http://www.chippower.com.tw/en/product
.html?str710f
URI類別

CheckSchemaName:


判斷Uri的名稱是否正確。
CheckHostName:

檢查所提供的Uri名稱是否符合有效的網際網
路主機名稱