/**
 * ServerMulticastSocketTest.java
 * 版权所有(C) 2014
 * 创建者:cuiran 2014-1-9 下午3:22:01
 */
package com.udpdemo.multicast;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * TODO
 * @author cuiran
 * @version 1.0.0
 */
public class ServerMulticastSocketTest {

	/**
	 * 2014-1-9 下午3:22:01
	 * @param args
	 *
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MulticastSocket multicastSocket;
		try {
			multicastSocket = new MulticastSocket();
			InetAddress address = InetAddress.getByName("239.0.0.1"); // 必须使用D类地址
	        multicastSocket.joinGroup(address); // 以D类地址为标识,加入同一个组才能实现广播

	        while (true) {
	            String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
	            byte[] buf = time.getBytes();
	            DatagramPacket datagramPacket = new DatagramPacket(buf, buf.length);
	            datagramPacket.setAddress(address); // 接收地址和group的标识相同
	            datagramPacket.setPort(10000); // 发送至的端口号

	            multicastSocket.send(datagramPacket);
	            Thread.sleep(1000);
	        }
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}



/**
 * ClientMulticastSocketTest.java
 * 版权所有(C) 2014
 * 创建者:cuiran 2014-1-9 下午3:24:25
 */
package com.udpdemo.multicast;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;

/**
 * TODO
 * @author cuiran
 * @version 1.0.0
 */
public class ClientMulticastSocketTest {

	/**
	 * 2014-1-9 下午3:24:25
	 * @param args
	 *
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MulticastSocket multicastSocket;
		try {
			multicastSocket = new MulticastSocket(10000);
			 InetAddress address = InetAddress.getByName("239.0.0.1");
		        multicastSocket.joinGroup(address);
		        byte[] buf = new byte[1024];

		        while (true) {
		            DatagramPacket datagramPacket = new DatagramPacket(buf, buf.length);
		            multicastSocket.receive(datagramPacket); // 接收数据,同样会进入阻塞状态

		            byte[] message = new byte[datagramPacket.getLength()]; // 从buffer中截取收到的数据
		            System.arraycopy(buf, 0, message, 0, datagramPacket.getLength());
		            System.out.println(datagramPacket.getAddress());
		            System.out.println(new String(message));
		        }
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} // 接收数据时需要指定监听的端口号

	}

}

最新文章

  1. Node.js之路【第一篇】初识Node.js
  2. dyld: Symbol not found: _OBJC_CLASS_$_NSURLSessionDataTask
  3. Asp.Net Web API 2第一课——入门
  4. 自定义饼图(PieChart)各个PieSlice的外观
  5. 下面就介绍下Android NDK的入门学习过程(转)
  6. CoreText 使用教程
  7. SWT中在treeview中显示图片
  8. Linux编译安装程序(使用configure、make、 make install)
  9. 基于python开发的股市行情看板
  10. TestOps - 最健壮性的测试角色
  11. solidity-library
  12. MySQL Workbench将模型生成SQL文件出错
  13. VIM 实现tab标签页及分屏,切换命令
  14. 某软件大赛C#版考题整理——【单选题】
  15. Python FLask Web 学习笔记:jinjia2的使用方法1
  16. 前端把html表格生成为excel表格
  17. 云服务器 ECS Linux 保存用户登录操作命令记录
  18. 项目中Map端数据处理不均匀性分析
  19. Linux Shell 编程学习笔记
  20. JSOI2018 R1 & 九省联考2018 滚粗记

热门文章

  1. Linux 下的一个全新的性能测量和调式诊断工具 Systemtap, 第 3 部分: Systemtap
  2. Activtiy完全解析(一、Activity的创建过程)
  3. Java面向对象要点
  4. 剑指Offer——记中国银行体检之旅
  5. FLAnimatedImage -ios gif图片加载框架介绍
  6. 改进版getpass库
  7. clang-format中文出错
  8. 递归的神奇之处在于你会发现问题竟然解决了--解N皇后谜题有感
  9. FFmpeg的HEVC解码器源代码简单分析:环路滤波(Loop Filter)
  10. 21 RadioGroup ListFragment