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.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 Connect Request Read / Write Read / Write Stop Close
客戶端的網路服務介面:TcpClient 定義在System.Net.Sockets的命名空間。 建立客戶端的網路服務介面,以連線至網路伺服端。
TcpClient類別常用的方法 BeginConnect Close Connect EndConnect 開啟伺服端的非同步連接之要求(不會被Block) Close 關閉TCP網路連線 Connect 使用指定主機位址(或名稱)與通訊阜編號來連線至伺服端 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()) '傳送資料 ns.Write(data, 0, data.Length) offset
伺服端的網路介面:TcpListener 定義在System.Net.Sockets的命名空間。 負責接聽來自客戶端的連接。
TcpListener類別常用的方法 AcceptSocket AcceptTcpClient BeginAcceptSocket 接受客戶端連接的要求 AcceptTcpClient 接受客戶端連線的要求 BeginAcceptSocket 開始非同步方式接受客戶端Socket連線的要求 BeginAcceptClient 開始非同步方式接受客戶端TcpClient連線的要求
TcpListener類別常用的方法 EndAcceptSocket EndAcceptTcpClient 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 Parse TryParse 將IP位址字串轉換為IPAddress TryParse 判斷字串是否為合法的IP位址
IPAddress類別常用的欄位 Any Broadcast IPv6Any IPv6Loopback 伺服端的網路介面必須接聽所有客戶端的活動 Broadcast 提供IP廣播位址 IPv6Any 伺服端的IPv6網路介面必須接聽所有客戶端的活動 IPv6Loopback 提供lPv6回送位址
IPAddress類別常用的欄位 IPv6None Loopback None 提供IPv6位址,表示不可使用的網路服務介面
IPInterfaceProperties類別 定義於System.Net.NetworkInformation命名空間。 取得網路卡上的網路資訊: Gatewary DNS
IPGlobalProperties類別 取得網路客戶端與伺服端連接之後,網路介面所在的電腦主機與伺服端它們之間的相關資訊 主機名稱 網域名稱 TcpConnectionInformation類別的State屬性,可找出目前TCP連線的狀態。
IPEndPoint類別 定義在System.Net的命名空間。 處理IP位址及服務所需要的通訊埠編號資訊。
IPEndPoint類別常用的方法 Create Serialize 從Socket端建立端點 將網路端點的資訊改成SocketAddress類別
IPEndPoint類別常用屬性與欄位 Address AddressFamily Port MaxPort, MinPort 取得或設定通訊阜的編號 MaxPort, MinPort 設定通訊阜編號的最大(小)值
第二章 基本網路程式設計 2-3偵測遠端主機的狀態
Ping類別 定義在System.Net.NetworkInformation命名空間。 偵測伺服器主機的IP是否存在於網路上。 傳送ICMP回應訊息給遠端電腦,並從遠端電腦接收對應的ICMP回應回覆訊息。 ICMP可能被防火牆阻擋。
Ping類別常用的方法 Send SendAsync SendAsyncCancel 傳送ICMP回應訊息給遠端電腦, 並從遠端電腦接收到對應的ICMP回應回覆訊息 SendAsync 以非同步方式將回應訊息給電腦,並從電腦接收到對應的ICMP回應回覆訊息 SendAsyncCancel 取消回應訊息之所有非同步要求,並且接收對應的ICMP回應回覆訊息
PingReply類別常用的屬性 Address Buffer Options RoundTripTime 取得主機位址 取得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 超文字傳輸協定(HTML) mailto:benny@myemail.com.tw 郵件傳輸協定 bbs://xxx.xxx.com 電子佈告欄傳輸協定 news.hinet.net 新聞群組
URL的格式 通訊協定://主機位址/虛擬目錄/資源?參數 http://www.codes.com.tw/index.html http:// 218.210.8.100/index.html http://www.codes.com.tw/Product/ItemNo?T61 http://218.210.8.100/Product/ItemNo?T61
URI Uniform Resource Identifier。 一致性資源識別碼。 透過「URI」的通訊協定,可將網路指向任何IP網址,任何連結、任何檔案…等的任何資訊。
URI的格式 通訊協定://主機名稱:通訊埠編號/目錄路徑/檔案名稱(參數) http://www.chippower.com.tw/en/product.html?str710f
URI類別 CheckSchemaName: CheckHostName: 判斷Uri的名稱是否正確。