資源描述:
《基于udp的組播通信》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在教育資源-天天文庫。
1、基于UDP的組播通信一般數(shù)據(jù)報通信是在兩臺主機之間的點對點通信,稱為“單播(Unicast)”。當多臺主機同時接收一個數(shù)據(jù)報時,若采用單播通信,則源主機需要給每個接收主機發(fā)送一個相同的數(shù)據(jù)報;若采用組播通信,則源主機只需發(fā)送一個數(shù)據(jù)報即可到達每個接收主機,從而節(jié)省了網(wǎng)絡帶寬,降低了發(fā)送主機的負荷。組播(Multicast)是一種特殊的數(shù)據(jù)報傳輸方式,它將具有相同需求的主機加入到某一個組,向組發(fā)送的信息,其所有成員均可接收到。組是用組播地址(D類IP地址:224.0.0.0-239.255.255.255)和標準UDP端口號來標識的,即待發(fā)送數(shù)據(jù)報的目的地址為一個組播地址。主機可以申
2、請加入某個組播地址所標識的組,也可以從該組中退出。MulticastSocket類為了實現(xiàn)組播通信,java.net包中有相應的MulticastSocket類。多播數(shù)據(jù)報套接字類MulticastSocket是DatagramSocket類的子類,它用來發(fā)送和接收IP多播包,同時可以沿用數(shù)據(jù)報通信的一些主要方法。其構造方法與常用方法如表所示。構造方法功能·publicMulticastSocket()throwsIOException·publicMulticastSocket(intport)throwsIOException·publicMulticastSocket(Soc
3、ketAddressbindaddr)throwsIOException·創(chuàng)建多播套接字·創(chuàng)建多播套接字并將其綁定到特定端口·創(chuàng)建綁定到指定套接字地址的MulticastSocket常用方法功能·publicvoidjoinGroup(InetAddressmcastaddr)·publicvoidjoinGroup(SocketAddressmcastaddr,NetworkInterfacenetIf)·publicvoidleaveGroup(InetAddressmcastaddr)·publicvoidleaveGroup(SocketAddressmcastaddr,N
4、etworkInterfacenetIf)·加入多播組·加入指定接口上的指定多播組·離開多播組·離開指定本地接口上的多播組組播發(fā)送程序(服務器)importjava.net.*;publicclassBroadCastextendsThread{Strings="天氣預報,最高溫度32度,最低溫度25度";intport=5858;//組播的端口InetAddressgroup=null;//組播組的地址MulticastSocketsocket=null;//多點廣播套接字BroadCast(){try{group=InetAddress.getByName("239.255.8
5、.0");//設置組播組的地址為239.255.8.0socket=newMulticastSocket(port);//多點組播套接字將在port端口播出socket.setTimeToLive(1);//設置組播套接字發(fā)送數(shù)據(jù)報范圍為本地網(wǎng)絡socket.joinGroup(group);//加入多播組,加入group后,socket發(fā)送的數(shù)據(jù)報}//可以被加入到group中的成員接收到catch(Exceptione){System.out.println("Error:"+e);}}publicvoidrun(){while(true){try{DatagramPacket
6、packet=null;//待廣播的數(shù)據(jù)包bytedata[]=s.getBytes();packet=newDatagramPacket(data,data.length,group,port);System.out.println(newString(data));socket.send(packet);//多播數(shù)據(jù)包sleep(2000);}catch(Exceptione){System.out.println("Error:"+e);}}}publicstaticvoidmain(Stringargs[]){newBroadCast().start();}}11.5.2組
7、播發(fā)送程序(服務器)(續(xù)一)運行方法:在待運行類的主目錄下編寫并運行MulticastDatagramSendDemo.bat文件,其內(nèi)容如下:javadatagram.MulticastDatagramSendDemopause圖11-12例11-11組播發(fā)送程序(服務器)的輸出結果11.5.3組播接收程序(客戶端)P414【例11-12】組播接收程序(客戶端)。程序清單11-12:MulticastDatagramReceiveDemo.javajavadatag