程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> UDP數據傳輸實例(3)

UDP數據傳輸實例(3)

編輯:關於C語言

這裡需要注意的是它的參數是引用類型,且remoteEP應該取發送方的IP和端口號。

JoinMulticastGroup()方法能將UdpClIEnt類添加到多路廣播組,它的用法如下所示。

public void JoinMulticastGroup(IPAddress multicastAddr);

public void JoinMulticastGroup(IPAddress multicastAddr,int timeToLive);

public void JoinMulticastGroup(int ifindex,IPAddress multicastAddr);

multicastAddr和前面所提到的IPAddress的實例有了本質區別,它不再是單個主機的IP地址,而是一個廣播地址。如果將IP中標識主機的部分全置“1”,即表示該網絡的廣播地址。比如校園網常用的C類地址,只要將最後8位全部置“1”即可得到本地網絡中的廣播地址。它的優勢是能實現廣播的功能,比如從A端發出數據,在B、C、D、E端等都能同時接收,而不是像上個例子中必須指定接收方的IP。timeToLive是按路由器跳數測量的TTL。

JoinMulticastGroup()的用法比較簡單,如下所示。

using System.Net;

using System.Net.Sockets;

……

UdpClient uc = new UdpClIEnt();

IPAddress bcip =IPAddress.Parse("222.18.142.255"); //C類IP的廣播地址

try

{

  uc.JoinMulticastGroup(bcip,20); //添加到多路組播

}

catch(Exception ex)

{

  Console.WriteLine(ex.Message);

}

DropMulticastGroup()方法進行與JoinMulticastGroup()方法相反的操作,用法如下所示。

public void DropMulticastGroup (IPAddress multicastAddr);

本節到目前為止,主要介紹了UdpClIEnt類的用法,其實直接用Socket類也能完成同樣的功能。鑒於篇幅有限,就不再詳述。只是有一點需要指出,利用Socket連接創建基於UDP的通信時,它的實例化方法應與TCP進行區別,如下所示。

Socket s = new Socket(AddressFamily.InterNetwork,SocketType.Dgram, ProtocolType.Udp);

後面兩個參數發生了變化,SocketType的類型選擇Dgram,表示數據傳輸是以數據報的形式而非流;協議類型需要選擇Udp。

UDP與TCP相比,在某些方面較有優勢。比如它的實時性比TCP要好,它不需握手、差錯檢驗和流的控制;它產生的負載很少等。它的缺點是數據傳輸不可靠。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved