zoukankan      html  css  js  c++  java
  • [转]java 组播

    1. 组播知识介绍: http://blog.csdn.net/happy_david/article/details/1569209

    2. java 组播实现:来自: http://blog.csdn.net/a352193394/article/details/7395600

    下面来演示一下使用Java Socket的组播类实现一个组播的小案例

    首先是接收端

    1. package com.bird.test;  
    2.   
    3. import java.net.DatagramPacket;  
    4. import java.net.InetAddress;  
    5. import java.net.MulticastSocket;  
    6. import java.util.Date;  
    7.   
    8. /** 
    9.  * 组播的客户端 
    10.  * @author Bird 
    11.  * 
    12.  */  
    13. public class MulticastReceive {  
    14.   
    15.       
    16.     public static void main(String[] args) throws Exception {  
    17.         test();  
    18.     }  
    19.       
    20.     public static void test() throws Exception{  
    21.         InetAddress group = InetAddress.getByName("224.0.0.2");//组播地址  
    22.         int port = 8888;  
    23.         MulticastSocket msr = null;//创建组播套接字  
    24.         try {  
    25.             msr = new MulticastSocket(port);  
    26.             msr.joinGroup(group);//加入连接  
    27.             byte[] buffer = new byte[8192];  
    28.             System.out.println("接收数据包启动!(启动时间: "+new Date()+")");  
    29.             while(true){  
    30.                 //建立一个指定缓冲区大小的数据包  
    31.                 DatagramPacket dp = new DatagramPacket(buffer, buffer.length);  
    32.                 msr.receive(dp);  
    33.                 String s = new String(dp.getData(),0,dp.getLength());  
    34.                 //解码组播数据包  
    35.                 System.out.println(s);  
    36.             }  
    37.         } catch (Exception e) {  
    38.             e.printStackTrace();  
    39.         }finally{  
    40.             if(msr!=null){  
    41.                 try {  
    42.                     msr.leaveGroup(group);  
    43.                     msr.close();  
    44.                 } catch (Exception e2) {  
    45.                     // TODO: handle exception  
    46.                 }  
    47.             }  
    48.         }  
    49.     }  
    50.       
    51.   
    52. }  


    然后是发送端

    1. package com.bird.test;  
    2.   
    3. import java.net.DatagramPacket;  
    4. import java.net.InetAddress;  
    5. import java.net.MulticastSocket;  
    6. import java.util.Date;  
    7.   
    8. /** 
    9.  * 组播的服务端 
    10.  * @author Bird 
    11.  * 
    12.  */  
    13. public class MulticastSender {  
    14.       
    15.     public static void server() throws Exception{  
    16.         InetAddress group = InetAddress.getByName("224.0.0.2");//组播地址  
    17.         int port = 8888;  
    18.         MulticastSocket mss = null;  
    19.         try {  
    20.             mss = new MulticastSocket(port);  
    21.             mss.joinGroup(group);  
    22.             System.out.println("发送数据包启动!(启动时间"+new Date()+")");  
    23.               
    24.             while(true){  
    25.                 String message = "Hello "+new Date();  
    26.                 byte[] buffer = message.getBytes();  
    27.                 DatagramPacket dp = new DatagramPacket(buffer, buffer.length,group,port);  
    28.                 mss.send(dp);  
    29.                 System.out.println("发送数据包给 "+group+":"+port);  
    30.                 Thread.sleep(1000);  
    31.             }  
    32.         } catch (Exception e) {  
    33.             e.printStackTrace();  
    34.         }finally{  
    35.             try {  
    36.                 if(mss!=null){  
    37.                     mss.leaveGroup(group);  
    38.                     mss.close();  
    39.                 }  
    40.             } catch (Exception e2) {  
    41.                 // TODO: handle exception  
    42.             }  
    43.         }  
    44.     }  
    45.       
    46.     public static void main(String[] args) throws Exception {  
    47.         server();  
    48.     }  
    49. }  


    通过开启多个接收端,然后开启发送端,就可以实现组播的效果

  • 相关阅读:
    7.Mongodb安全性流程
    6.Mongodb索引
    5.Mongodb聚合
    8-进程管理
    7-安装包管理
    6-文件系统
    5-权限用户组
    27-ATM+购物车程序
    26.本章小结
    名词解释
  • 原文地址:https://www.cnblogs.com/harrysun/p/3376869.html
Copyright © 2011-2022 走看看