
摘? ?要:Java網絡編程技術是一個重要的Java程序設計環節,在組播技術中Java網絡編程有廣泛的應用。組播技術屬于3種IP網絡數據傳輸方式之一,較單播與廣播方式的效果更高,本文基于Java網絡編程與Java平臺設計了一個組播程序,并進行了實驗,實驗成功,在組播技術中運用Java平臺可行性高,效率更佳。
關鍵詞:Java網絡編程;組播技術;套接字
Java網絡編程技術是一個重要的Java程序設計環節,具有強大的跨平臺網絡庫的語言優勢,在組播技術中Java網絡編程有廣泛的應用。組播技術屬于3種IP網絡數據傳輸方式之一,較單播與廣播方式的效果更高,目前主要在224.0.0.0到239.255.255.255的IPv4組播地址范圍內進行組播。
1? ? Java網絡編程的組播結構
網絡數據的傳輸分為3種常見類型,即單播、組播和廣播,其中,組播具有兼容特性,是對單播和廣播的兼容,能實現數據的組內傳遞和輸送,并且所有接受者都能收到,在組內的發送者和每一個接受者之間,能實現多點網絡傳輸,數據的覆蓋面更加寬廣。組播是一種中間技術,數據傳遞的方式主要是由發送方傳輸給另一方,將相同的數據包通過路由器動態決定數據的路由,尋找組播的地址。必要時,還能獲取賦值數據,將通過組播中間技術,其傳輸給每一個主機,能極大地提升數據傳遞的速度,減少骨干網絡的擁塞情況,能更加適用于現代快速數據傳播的工作模式中,滿足實際需求。整個結構系統的數據傳遞從接收端開始,使用Java Socket的組播類進行的一個組播案例。發送端將數據發送到主機或者每一個用戶對象,通過多個接收端,開啟發送端,實現組播間數據傳遞。
2? ? 組播Socket技術
Java網絡編程主要是通過Java.net中的MulticastSocket類組建一個Socket,作為組播數據。先建立一個MulticastSocket。通過其中的joinGroup()與一個組播組建立連接,并參與其中。建立一個DatagramPacket,通過字節數組構建一個數據緩沖區域,放置一個循環體,以繼承DatagramPacket類的receive()方法,無需數據接收時,通過調用這一Socket的leaveGroup()法與組播組斷開連接,利用繼承DatagramPacket類的receive()方法將該Socket關閉。需要向組播地址傳輸數據時,則無需加入組播組中,直接新建一個DatagramPacket,并將數據與組播組地址填充,利用send()法直接傳輸數據即可。
3? ? 基于Java網絡編程中組播技術的應用
3.1? 前期準備工作
首先安裝JDK軟件與Eclipse軟件,并在Eclipse軟件中,將相關Java源程序編寫工作完成。
3.2? 創建MulticastReceive作為接收端類
(1)創建一個組播地址及端口。組播地址創建方法為:InetAddress group=InetAddress.getByName("228.0.0.1")。端口創建方法為:int port=8000;其中,228.0.0.1指組播地址,8000則是端口。
(2)創建組播套接字符并加入到一個組播組中。組播套接字符創建方法為:MulticastSocket msr=new MulticastSocket(port)。組播組加入方法為:msr.joinGroup(group)。MulticastSocket創建后,就能夠順利進行后續的組播組加入、向組中成員發送數據或接收來自于組中成員的數據以及離開組播組等各項與組播組相關的操作。
(3)建立一個數據緩沖區。需要創建一個指定緩沖區大小及組播地址和端口的 DatagramPacket 組播數據包對象,創建方法為:
byte[]buffer=new byte[8192];
DatagramPacket dp=new DatagramPacket(buffer,buffer.length)
(4)接收對應的組播數據包。接收方法為:msr.receive(dp);
(5)解碼該組播數據包并提取所需信息。方法為:
String s=nwe Sring(dp.getData(),0,dp.getLength());
接收端代碼可設計如圖1所示。
3.3? 創建MulticastSend作為發送端類
(1)建立一個組播地址與端口。組播地址創建方法為:InetAddress group=InetAddress.getByName(''228.0.0.1'');端口創建方法為:int port=8000;發送端組播地址和端口要與接收端地址和端口保持一致。
(2)建立一組組播套接字符并加入到一個組播組中。組播套接字符創建方法為:MulticastSocket mss=new MulticastSocket(port);組播組加入方法為:mss.joinGroup(group);
(3)建立一個數據緩沖區,并匹配一個組播地址與端口組播數據包。創建方法為:
byte[]buffer=message.getBytes();
DatagramPacket dp=new DatagramPacket(buffer,buffer.length,group,port);
mss.sen(dp);
send()的功能在于將DatagramSocket對應的數據包發送出去。無需接收數據時,直接調用該Socket的leaveGroup()法與該組播組脫離連接,同時關閉這一Socket。發送端代碼如圖2所示。
發送端代碼4? ? 實驗結果
對以上應用研究分析得出,編寫Java組播技術應用程序,需要包括如下基礎步驟。
(1)建立一個MulticastSocker組播套接字符對象,確保發送端與接收端有可供使用的數據。
(2)建立一個DatagramPacket組播數據包對象,并指定其緩沖區大小、地址、端口,同時,要保證發送端與接收端使用同樣的組播地址與端口。
(3)通過組播套接字符joinGroup()加入到一個組播中。
(4)在組播中加入組播數據包對象,并通過組播套接字符中的receive()與send()接收或發送組播數據包。
(5)解碼并提取發送或接收到組播數據包信息,根據獲得的信息采取相應的響應動作。
(6)通過while循環對第四與第五個步驟進行重復。
(7)組播套接字符中的leaveGroup()可用于離開、關閉組播套接字。
通過以上步驟及代碼建立一個組播后,運行結果如圖3所示,準備好接收端后,能夠發現發送端會一直保持數據發送動作,實驗成功,證明方法可行。
5? ? 結語
隨著現代互聯網技術水平不斷提升,組播技術在當今人類社會生活和工作中的應用非常廣泛,尤其是視頻直播、大型游戲等,且人們對組播數據傳遞也不斷在提出新要求。因此,不斷提升組播數據傳播的效率,是當前一個重要的研究問題,通過Java網絡編程,對其結構進行優化,最終能提升組播路由算法的傳播效率,不斷滿足各個企業的發展需求,并且這種組播技術的應用推廣,最終呈現一定的特點,成為目前非常理想的組播算法的主流方法。作者簡介:趙文清(1996— ),女,河南商丘人,本科生;研究方向:網絡工程,網絡編輯。