MulticastSocket 使用


http://blog.csdn.net/cuiran/article/details/18043459



[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. /** 
  2.  * ServerMulticastSocketTest.java 
  3.  * 版权所有(C) 2014 
  4.  * 创建者:cuiran 2014-1-9 下午3:22:01 
  5.  */  
  6. package com.udpdemo.multicast;  
  7.   
  8. import java.io.IOException;  
  9. import java.net.DatagramPacket;  
  10. import java.net.InetAddress;  
  11. import java.net.MulticastSocket;  
  12. import java.text.SimpleDateFormat;  
  13. import java.util.Date;  
  14.   
  15. /** 
  16.  * TODO  
  17.  * @author cuiran 
  18.  * @version 1.0.0 
  19.  */  
  20. public class ServerMulticastSocketTest {  
  21.   
  22.     /** 
  23.      * 2014-1-9 下午3:22:01 
  24.      * @param args 
  25.      *  
  26.      */  
  27.     public static void main(String[] args) {  
  28.         // TODO Auto-generated method stub  
  29.         MulticastSocket multicastSocket;  
  30.         try {  
  31.             multicastSocket = new MulticastSocket();  
  32.             InetAddress address = InetAddress.getByName("239.0.0.1"); // 必须使用D类地址  
  33.             multicastSocket.joinGroup(address); // 以D类地址为标识,加入同一个组才能实现广播  
  34.               
  35.             while (true) {  
  36.                 String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());  
  37.                 byte[] buf = time.getBytes();  
  38.                 DatagramPacket datagramPacket = new DatagramPacket(buf, buf.length);  
  39.                 datagramPacket.setAddress(address); // 接收地址和group的标识相同  
  40.                 datagramPacket.setPort(10000); // 发送至的端口号  
  41.                   
  42.                 multicastSocket.send(datagramPacket);  
  43.                 Thread.sleep(1000);  
  44.             }  
  45.         } catch (IOException e) {  
  46.             // TODO Auto-generated catch block  
  47.             e.printStackTrace();  
  48.         } catch (InterruptedException e) {  
  49.             // TODO Auto-generated catch block  
  50.             e.printStackTrace();  
  51.         }  
  52.           
  53.     }  
  54.   
  55. }  
[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1.   
[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1.   
[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1.   

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. /** 
  2.  * ClientMulticastSocketTest.java 
  3.  * 版权所有(C) 2014 
  4.  * 创建者:cuiran 2014-1-9 下午3:24:25 
  5.  */  
  6. package com.udpdemo.multicast;  
  7.   
  8. import java.io.IOException;  
  9. import java.net.DatagramPacket;  
  10. import java.net.InetAddress;  
  11. import java.net.MulticastSocket;  
  12.   
  13. /** 
  14.  * TODO  
  15.  * @author cuiran 
  16.  * @version 1.0.0 
  17.  */  
  18. public class ClientMulticastSocketTest {  
  19.   
  20.     /** 
  21.      * 2014-1-9 下午3:24:25 
  22.      * @param args 
  23.      *  
  24.      */  
  25.     public static void main(String[] args) {  
  26.         // TODO Auto-generated method stub  
  27.         MulticastSocket multicastSocket;  
  28.         try {  
  29.             multicastSocket = new MulticastSocket(10000);  
  30.              InetAddress address = InetAddress.getByName("239.0.0.1");  
  31.                 multicastSocket.joinGroup(address);  
  32.                 byte[] buf = new byte[1024];  
  33.                   
  34.                 while (true) {  
  35.                     DatagramPacket datagramPacket = new DatagramPacket(buf, buf.length);  
  36.                     multicastSocket.receive(datagramPacket); // 接收数据,同样会进入阻塞状态  
  37.                       
  38.                     byte[] message = new byte[datagramPacket.getLength()]; // 从buffer中截取收到的数据  
  39.                     System.arraycopy(buf, 0, message, 0, datagramPacket.getLength());  
  40.                     System.out.println(datagramPacket.getAddress());  
  41.                     System.out.println(new String(message));  
  42.                 }  
  43.         } catch (IOException e) {  
  44.             // TODO Auto-generated catch block  
  45.             e.printStackTrace();  
  46.         } // 接收数据时需要指定监听的端口号  
  47.          
  48.     }  
  49.   
  50. }  


0
0



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值