[VS2010 Online]Silverlight 4.0 New Feature - UDP Multicast

[VS2010 Online]Silverlight 4.0 New Feature - UDP Multicast

在 Silverlight 4.0 提供了 UDP MultiCast的功能。什麼是 UDP,可以參考下列說明:

 

UDP 則是一個非連線型(Connectionless)的非可靠傳輸協定﹐它並不會運用確認機制來保

證資料是否正確的被接收、不需要重傳遺失的資料、資料的接收可不必按順序進行、也不提

供回傳機制來控制資料流的速度。因此﹐ UDP 信息可能會在網路傳送過程中丟失﹑重複﹑

或不依順序﹐而且抵達速度也可能比接收端的處理速度還快。對於某些訊息量較大、時效性

大於可靠性的傳輸來說(比方說語音 / 影像),UDP 的確是個不錯的選擇。

 

Silverlight 4.0 在 System.Net.Sockets 命名空間下有兩個類別分別實作了 MultiCast

的功能:

 

UdpSingleSourceMulticastClient

接收端僅接收單一來源的伺服器的內容,這是屬於一(Server)對多(Client)的關係(Source

Specific Multicast (SSM))。



UdpAnySourceMulticastClient

接收端可接收多重來源的伺服器的內容,這是屬於多(Server)對多(Client)的關係(也可以稱為 Any Source Multicast (ASM) or Internet Standard Multicast (ISM))。

 

 這裡我們要建立 Policy Server,在多點傳送時,需要設定一個 Policy 檔案來驗證

 client 是否能傳送訊息,內容如下:

   1: <?xml version="1.0" encoding="utf-8" ?>
   2:  
   3: <!--  an example configuration file  -->
   4: <slmp:multicast-policy-responder xmlns:slmp="http://schemas.microsoft.com/silverlight/policyservers/multicastpolicyserver">
   5:   <slmp:ssm-responder>
   6:     <slmp:respond-to application="http://www.contoso.com/">
   7:       <slmp:allowed-resource group="232.0.0.1" port="12345" />
   8:       <slmp:allowed-resource group="ff3e::8000:1" port="12345-12346" />
   9:     </slmp:respond-to>
  10:   </slmp:ssm-responder>
  11:   <slmp:asm-responder>
  12:     <slmp:respond-to application="http://www.contoso.com/">
  13:       <slmp:allowed-resource group="224.0.0.1" port="12345" />
  14:       <slmp:allowed-resource group="ff0e::1" port="12345-12346" />
  15:     </slmp:respond-to>
  16:   </slmp:asm-responder>
  17: </slmp:multicast-policy-responder>

 

傳遞的順序為:

Client傳遞一個「announcement」訊息給 Policy Server,向 Server 要求 Policy 檔案,

然後 Server 傳遞 Policy 檔案給 Client 端,驗證 Client 端是不是有符合檔案內的 ip

以及 port 設定。

 

我們來看 UdpAnySourceMulticastClient 怎麼處理的?

1.

首先要加入 multicast group:

image

 

2.

傳送訊息給 Group 內的人。

image

 

3.

接收的處理:

image 

 

 

 

我們直接來看 Silverlight 在聊天室中運用 Multicast 傳遞的結果:

首先要執行 Policy Server:

image

 

User 分別為:

image image

 

展開對話:

image

 

 

這個功能還可以運用在語音的傳遞上,因為語音傳遞較需要時效性,可以透過 UDP 來處理。

 

希望這篇文章對您有幫助。

 

參考網址:

1. http://www.pcnet.idv.tw/pcnet/network/network_ip_tcp.htm

2. http://www.silverlightplayground.org/post/2010/01/02/Writing-a-server-less-conferencing-client-with-Silverlight-40-UDP-Multicast.aspx

3. http://code.msdn.microsoft.com/silverlightsdk

4. http://msdn.microsoft.com/en-us/library/ee707325(VS.96).aspx

 

 

 

如果您有微軟技術開發的問題,可以到MSDN Forum發問。

如果您有微軟IT管理的問題,可以到TechNet Forum發問喔。