`

java中的组播编程

    博客分类:
  • Java
阅读更多
编辑一个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()方法,离开组播组;关闭组播套接字

接收组播数据包程序:
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) {  
                }  
            }  
        }  
    }  
}  


发送组播数据包程序:
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) {  
                }  
            }  
        }  
    }  
}  
分享到:
评论

相关推荐

    基于Java网络编程中组播技术的应用研究.zip

    基于Java网络编程中组播技术的应用研究

    基于Java网络编程中组播技术的应用研究.pdf

    基于Java网络编程中组播技术的应用研究.pdf

    基于Java网络编程中组播技术的应用与研究.pdf

    基于Java网络编程中组播技术的应用与研究.pdf

    Java网络编程(第3版) 中文版

    本书内容全面,涵盖了从网络基础知识到远程方法调用(RMI)等各方面的内容,书中章节涉及到TCP和UDP socket、服务器socket、URL和URI、组播以及特殊用途的API(如JavaMail)等等。本书展示了如何使用JSSE编写安全的...

    java网络编程培训文档

    无论是希望编写特殊用途的Web服务器、安全的在线订单接收程序、简单的组播代理还是电子邮件客户端,都会找到可供学习和借用的代码。 无论你是经验丰富的网络开发人员、Java程序员新手,还是只希望对Java网络编程稍...

    Java Network Programming 网络编程

    本书内容全面,涵盖了从网络基础知识到远程方法调用(RMI)等各方面的内容,书中章节涉及到TCP和UDP socket、服务器socket、URL和URI、组播以及特殊用途的API(如JavaMail)等等。本书展示了如何使用JSSE编写安全的...

    java编程100例

    实例68 组播组中发送和接受数据 实例69 时间日期服务器 实例70 FTP连接与浏览 实例71 HTTP连接与浏览 实例72 数据压缩与传输 实例73 Telnet客户端 实例74 创建和配置数据源 实例75 建立与断开数据库的连接 实例76 ...

    基于socket编程题的java聊天程序

    基于socket编程题的java聊天程序 实现客户端 服务端通信、登录等功能。是毕业设计和课程设计必不可少的好资源

    JAVA网络编程.第3版.哈诺德著.扫描版.含源码

    本书内容全面,涵盖了从网络基础知识到远程方法调用(RMI)等各方面的内容,书中章节涉及到TCP和UDPsocket、服务器socket、URL和URI、组播以及特殊用途的API(如JavaMail)等等。本书展示了如何使用JSSE编写安全的...

    网络编程经典书籍

    本书内容全面涵盖了从网络基础知识到远程方法调用(RMI)等各方面的内容,书中章集涉及到TCP和UDP socket 、服务器socket、URL和URI、组播以及特殊用途的API(如JavaMail)等等。本书展示了如何使用JSSE编写安全的...

    Java网络编程(第3版) 中文版 文件2

    本书内容全面,涵盖了从网络基础知识到远程方法调用(RMI)等各方面的内容,书中章节涉及到TCP和UDP socket、服务器socket、URL和URI、组播以及特殊用途的API(如JavaMail)等等。本书展示了如何使用JSSE编写安全的...

    java_udp.rar_java udp_组播

    这是java udp网络编程的一个实例,对做p2p软件很有帮助,传上来和大家分享。

    基于Java Socket编程的局域网聊天程序源代码

    基于Java Socket编程的局域网聊天程序源代码,供新手分析使用

    java源码包---java 源码 大量 实例

    Java 组播组中发送和接受数据实例 3个目标文件。 Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密  Java非...

    Java网络编程(第三版)中文版.part09.rar

    本书内容全面,涵盖了从网络基础知识到远程方法调用(RMI)等各方面的内容,书中章节涉及到TCP和UDP socket、服务器socket、URL和URI、组播以及特殊用途的API(如JavaMail)等等。本书展示了如何使用JSSE编写安全的...

    java网络编程

    本书内容全面,涵盖了从网络基础知识到远程方法调用(RMI)等各方面的内容,书中章节涉及到TCP和UDP socket、服务器socket、URL和URI、组播以及特殊用途的API(如JavaMail)等等。本书展示了如何使用JSSE编写安全的...

    Java网络编程实例 (作者:孙一林 彭波)

    本书是一本以网络应用实例为主的实用型参考书,主要包括访问资源、网络Applet小程序、Socket、UDP协议通讯、网络组播、邮件收发、远程方法调用、多媒体数据流的传输和播放,以及常用网络工具的实例等。在配书光盘中...

    Java网络编程(第三版)中文版.part01.rar

    本书内容全面,涵盖了从网络基础知识到远程方法调用(rmi)等各方面的内容,书中章节涉及到tcp和udp socket、服务器socket、url和uri、组播以及特殊用途的api(如javamail)等等。本书展示了如何使用jsse编写安全的...

    java源码包2

    Java 组播组中发送和接受数据实例 3个目标文件。 Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密  ...

    java源码包4

    Java 组播组中发送和接受数据实例 3个目标文件。 Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密  ...

Global site tag (gtag.js) - Google Analytics