Java如何实现网络组播的应用软件

Java如何实现网络组播的应用软件,第1张

(1)、创建一个组播组。

(2)、加入组播组。

(3)、向组播组发送数据。

(4)、从组播组接收数据并显示。

(5)、离开组播组。

程序具体实现是创建一个框架类和一个包含main()方法的应用程序类,类名分别为WBFrame和WBUser其Java文件名是WBFrame.java和WBUuser.java。其中WBFrame.java主要代码如下:

void jButton2_actionPerformed(ActionEvent e)

编辑一个java组播应用程序的过程如下

1. 创建一个用于发送和接收的MulticastSocket组播套接字对象

2. 创建一个指定缓冲区大小及组播地址和端口的DatagramPacket组播数据包对象

3. 使用组播套接字joinGroup(),将其加入到一个组播

4. 使用组播套接字的send()方法,将组播数据包对象放入其中,发送组播数据包.

或者

使用组播套接字的receive()方法,将组播数据包对象放入其中,接收组播数据包

5. 解码组播数据包提取信息,并依据得到的信息作出响应String s = new String(dp.getData(), 0, dp.getLength())

6. 重复过程4和5,即在while循环中实现。

7. 使用组播套接字的leaveGroup()方法,离开组播组;关闭组播套接字

接收组播数据包程序:

Java代码

public class MulticastReceived {

public static void main(String[] args) throws Exception {

InetAddress group = InetAddress.getByName("224.0.0.4")// 组播地址

int port = 4006// 端口

MulticastSocket msr = null

try {

msr = new MulticastSocket(port)// 1.创建一个用于发送和接收的MulticastSocket组播套接字对象

msr.joinGroup(group)// 3.使用组播套接字joinGroup(),将其加入到一个组播

byte[] buffer = new byte[8192]

System.out.println("接收数据包启动!(启动时间:)" + new java.util.Date() + ")")

while (true) {

DatagramPacket dp = new DatagramPacket(buffer, buffer.length)// 2.创建一个指定缓冲区大小及组播地址和端口的DatagramPacket组播数据包对象

msr.receive(dp)// 4.使用组播套接字的receive()方法,将组播数据包对象放入其中,接收组播数据包

String s = new String(dp.getData(), 0, dp.getLength())// 5.解码组播数据包提取信息,并依据得到的信息作出响应

System.out.println(s)

}

} catch (IOException e) {

e.printStackTrace()

} finally {

if (msr != null) {

try {

msr.leaveGroup(group)// 7.使用组播套接字的leaveGroup()方法,离开组播组

msr.close()// 关闭组播套接字

} catch (IOException e) {

}

}

}

}

}

发送组播数据包程序:

Java代码

public class MulticastSender {

public static void main(String[] args) throws Exception {

InetAddress group = InetAddress.getByName("224.0.0.1")// 组播地址

int port = 4000// 端口

MulticastSocket mss = null

try {

mss = new MulticastSocket(port)// 1.创建一个用于发送和接收的MulticastSocket组播套接字对象

mss.joinGroup(group)// 3.使用组播套接字joinGroup(),将其加入到一个组播

byte[] buffer = new byte[8192]

System.out.println("接收数据包启动!(启动时间:)" + new java.util.Date() + ")")

while (true) {

String message = "Hello" + new java.util.Date()

byte[] buffer2 = message.getBytes()// 2.创建一个指定缓冲区大小及组播地址和端口的DatagramPacket组播数据包对象

DatagramPacket dp = new DatagramPacket(buffer, buffer.length, group, port)

// msr.receive(dp)//接收组播数据包

mss.send(dp)// 4.使用组播套接字的send()方法,将组播数据包对象放入其中,发送组播数据包

// String s = new String(dp.getData(), 0, dp.getLength())//5.解码组播数据包提取信息,并依据得到的信息作出响应

System.out.println("发送数据包给" + group + ":" + port)

Thread.sleep(1000)

}

} catch (IOException e) {

e.printStackTrace()

} finally {

if (mss != null) {

try {

mss.leaveGroup(group)// 7.使用组播套接字的leaveGroup()方法,离开组播组

mss.close()// 关闭组播套接字

} catch (IOException e) {

}

}

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11788788.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存