原始碼下載: MutualUdpClientSample_jb51net.rar

在開發(fā)與遠程設備通訊的系統(tǒng)時,為了提高數(shù)據(jù)傳輸?shù)男剩3x擇UDP這個通訊協(xié)議來作為數(shù)據(jù)傳輸?shù)拿浇椤6?.NET framework中所提供的UdpClient對象,可以幫助開發(fā)人員依照系統(tǒng)需求開啟UDP套接字點,快速建立UDP聯(lián)機來提供與遠程設備通訊的功能。

這個系統(tǒng)架構下當增加一個不同種類的遠程設備時,必須要提供一個不同的UDP套接字點,才能用來提供與不同種類遠程設備通訊的功能,在遠程設備種類越來越多時,系統(tǒng)所需要的UDP套接字點就會依照遠程設備種類而增加。

在遠程設備種類越來越多的情景中,為了網(wǎng)絡管理考慮會限制系統(tǒng)與遠程設備通訊時,必須統(tǒng)一使用同一個UDP套接字點來與遠程設備通訊,再由封包內容、或是IP地址去判斷實際連接的遠程設備為何。
代碼如下:
class Program
{
static void Main(string[] args)
{
// Receiver
UdpClient udpClientA = new UdpClient(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1234));
UdpClient udpClientB = new UdpClient(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1234));
}
}
依照系統(tǒng)需求開發(fā)人員可能寫出上列的程序代碼,直接建立兩個UdpClient對象來開啟同一個UDP套接字點。這段程序代碼內容可以通過編譯程序的檢查,但在按下執(zhí)行之后,就會在Visual Studio之中看到SocketException的例外通知,用來告知開發(fā)人員同一個套接字點只能被開啟一次,使用兩個UdpClient來開啟同一個套接字點是無法執(zhí)行的。

有涉略過Design pattern的開發(fā)人員,在遇到資源對象只能有一個實體的情景,會想到套用Singleton Pattern來提供資源對象共享的功能。系統(tǒng)中UdpClient對象所開啟的UDP套接字點,就是屬于這種只能由一個對象所開啟的資源,這個情景中在UdpClient對象上套用Singleton Pattern看起來會是個不錯的選擇。
代碼如下:
class Program
{
// Singleton
private static UdpClient _udpClientInstance = null;
private static UdpClient UdpClientInstance
{
get
新聞熱點
疑難解答
圖片精選