基礎篇C# 簡介開發環境變數與運算流程控制陣列函數物件例外處理函式庫篇檔案處理資料結構正規表達式Thread應用篇視窗程式媒體影音網路程式遊戲程式手機程式資料庫雲端運算特殊功能委派擴展方法序列化LinQWPF網路資源教學影片投影片教學文章軟體下載考題解答101習題 |
簡介UDP 是網路程式設計當中,最簡單的一種模式。本文將介紹如何使用 C# 撰寫 UDP 的『傳送-接收程式』。 UDP 程式的架構使用 UDP 方式傳送訊息,由於封包是以一個一個的方式分別傳輸,先傳送者不一定會先到,甚至於沒有到達也不進行處理。由於這種方式不是連線導向的方式,因此不需要記住連線的 Socket,只要直接用 Socket 當中的 ReceiveFrom(data, ref Remote) 函數即可。 UDP 的程式必須有『傳送-接收』兩端,通常傳送端稱為 Client,接收端稱為 Server,以下是一個 UDP Client-Server 的 C# 程式架構。 客戶端:傳送訊息的 Client
伺服端:接收訊息的 Server
為了說明 UDP 網路程式的設計方式,我們設計了一個單向的 UDP 聊天程式專案,這個專案包含 UdpClient.cs 與 UdpServer.cs 等兩個 C# 的程式。使用者可以在 UdpClient 當中輸入要傳送給 UdpServer 的訊息,而程式會忠實的將訊息從 Client 傳送到 Server 中。當使用者輸入 exit 的時候,Client 程式將會結束,以下是該程式執行時的畫面。 圖一、單向的 UDP 聊天專案的執行畫面 原始程式碼以下是一個 UDP 客戶端 UdpClient,該客戶端會接受使用者的輸入,然後將訊息傳遞給伺服端的 UdpServer。 檔案:UdpClient.cs
以下是一個 Udp 的伺服端,利用無窮迴圈接收上述客戶端傳來的訊息,然後列印在螢幕上。 檔案:UdpServer.cs
程式說明在上述程式當中,讀者會看到兩個無窮迴圈,這在網路程式設計領域是很常見的。Server 通常是一個由無窮迴圈所構成的程式,該程式不斷的接收由 Client 所傳來的訊息,然後進行處理與顯示。 程式中的 IPEndPoint 所代表的就是 TCP/IP 協定中的 IP 層,也就是網址。建構函數 new IPEndPoint(address, port) 有兩個參數,第一個是 IP 地址 (address),第二個是連接埠 (port)。這個物件在撰寫 Client 與 Server 時都會用到。 在 UdpClient 的程式中,我們直接利用下列程式連接到 Server,您可以使用
UdpServer 程式中的 new IPEndPoint(IPAddress.Any, 5555) 會開啟該伺服器電腦的 5555 這個連接埠 (port),讓其他程式可以透過網路傳送訊息給該程式。一但某程式開啟了特定連接埠,就會霸佔該連接埠。作業系統不會允許其他程式再度開啟這個連接埠,因為該連接埠已經被用掉了。 讀者可能會對其中的 IPAddress.Any 的用意感到納悶,為何不是指定本機的 IP,而是用 IPAddress.Any 呢? 參考文獻 |
UDP 網路程式設計
page revision: 1, last edited: 15 Jun 2010 05:38
Post preview:
Close preview