MulticastSocket 使用
/** * 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(); } // 接收数据时需要指定监听的端口号 } }
MulticastSocket 使用的更多相关文章
- java之DatagramSocket、DatagramPackage丶MulticastSocket 广播学习
1.基本概念: a.DatagramPacket与DatagramSocket位于java.net包中 b.DatagramPacket表示存放数据的数据报,DatagramSocket表示接受或发送 ...
- 使用MulticastSocket实现多点广播
原文链接:http://hbiao68.iteye.com/blog/1943354 使用MulticastSocket实现多点广播 DatagramSocket只允许数据报发送给指定的目标地址,而M ...
- 关于java MulticastSocket中的joinGroup(SocketAddress mcastAddr,NetworkInterface netif)
今天复习了一下java网络编程这方面(其实是之前没有学好),之前在linux下用c来做过一些例子,不过不好久没有用也就忘得一干二净了.不知道c/c++的东西不太好记,还是当初没好好学. 关于组播这方面 ...
- Android App用MulticastSocket监听组播,为什么连接到不同路由、在不同手机上跑,有的能收到有的收不到
---------------------------!! 转载请注明出处 !!----------------------- 一个项目,利用wifi组播在局域网内发现设备.却发现在有的路由器上能 ...
- java.net.MulticastSocket Example--reference
In this example we are going to explain how to use MulticastSocket in Java, in order to enable a ser ...
- 17.4.3 使用MulticastSocket实现多点广播(5)
该类主要实现底层的网络通信功能,在该类中提供了一个broadCast()方法,该方法使用Multicast Socket将指定字符串广播到所有客户端:还提供了sendSingle()方法,该方法使用D ...
- 17.4.3 使用MulticastSocket实现多点广播(4)
17.4.3 使用MulticastSocket实现多点广播(4) 通过UserInfo类的封装,所有客户端只需要维护该UserInfo类的列表,程序就可以实现广播.发送私聊信息等功能.本程序底层通 ...
- 17.4.3 使用MulticastSocket实现多点广播(3)
上面程序中init()方法里的第一行粗体字代码先创建了一个MulticastSocket对象,由于需要使用该对象接收数据报,所以为该Socket对象设置使用固定端口:第二行粗体字代码将该Socket对 ...
- 17.4.3 使用MulticastSocket实现多点广播(2)
// 让该类实现Runnable接口,该类的实例可作为线程的target public class MulticastSocketTest implements Runnable { // 使用常量作 ...
- 17.4.3 使用MulticastSocket实现多点广播(1)
http://book.51cto.com/art/201203/322560.htm <疯狂Java讲义(第2版)>本书深入介绍了Java编程的相关方面,全书内容覆盖了Java的基本语法 ...
随机推荐
- ZooKeeper之(一)ZooKeeper是什么
1.1 产生背景 当今是个分布式.集群.云计算等名词满天飞的时代.造成这种局面的一个重要因素就是,单一机器的处理能力已经不能满足我们的需求,不得不采用由多台机器组成的服务集群.服务集群对外提供服务的过 ...
- ERROR: Cannot change version of project facet Dynamic Web Module to 3.0?
Issue: When you create web app in eclipse with maven configuration, you may get following error. Can ...
- Android布局概述
布局 布局定义用户界面的视觉结构,如Activity或应用小部件的 UI.您可以通过两种方式声明布局: 在 XML 中声明 UI 元素.Android 提供了对应于 View 类及其子类的简明 XML ...
- Android中的语言和字符串资源
在任何情况下,从您的应用代码中提取 UI 字符串并将其存放在外部文件中都是个好办法.Android 在每个 Android 项目中都提供一个资源目录,从而简化了这一过程. 如果您是使用 Android ...
- J2EE进阶(十四)超详细的Java后台开发面试题之Spring IOC与AOP
J2EE进阶(十四)超详细的Java后台开发面试题之Spring IOC与AOP 前言 搜狐畅游笔试题中有一道问答题涉及到回答谈谈对Spring IOC与AOP的理解.特将相关内容进行整理. ...
- cocos2dx 3.2之Lua打飞机项目
1 创建lua打飞机项目 cocos new T32Lua -dE:\Installed\cocos2d-x-3.2\cocos2d-x-3.2\projects -l lua 2 ...
- UIScrollView实现图片轮播器的无限滚动
简介 在现在的一些App中常常见到图片轮播器,一般用于展示广告.新闻等数据,在iOS内并没有现成的控件直接实现这种功能,但是通过UIScrollView的允许分页设置,可以实现滚动轮播的功能. 轮播原 ...
- webStorm破解
B4A73YYJ-eyJsaWNlbnNlSWQiOiI0M0I0QTczWVlKIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNzaWduZWVOYW1lIjoiIiw ...
- Python pygame安装过程笔记
今天看到一个教程,是关于Python安装pygame模块的.觉得很好,拿来分享一下. 安装Python 额,这个小题貌似在这里很是多余啊.但是为了照顾到刚刚学习Python的童鞋,我还是多啰嗦两句吧. ...
- scala for spark
写了点scala的内容,方便看spark源码,估计一两天就能看完,内容比较粗浅. 下载地址: http://download.csdn.net/detail/lsshlsw/7983541