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名稱是否符合有效的網際網
路主機名稱