摘 要: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— ),女,河南商丘人,本科生;研究方向:网络工程,网络编辑。