java点滴之MulticastSocket的使用】的更多相关文章

一基本概念 该类恰是上文介绍的DatagramSocket的子类. DatagramSocket仅仅同意数据报发送给指定的目标地址,而MulticastSocket能够将数据报以广播的方式发送到多个client 若要使用多点广播,则须要让一个数据报标有一组目标主机地址,当数据报发出后,整个组的全部全部主机都能收到该数据报.IP多点广播(或多点发送)实现了将单一信息发送到多个接受者的广播,其思想是设置一组特殊网络地址作为多点广播地址,每个多点广播地址都被看做一个组,当client须要发送.接收广播…
在单播模式中有服务器端和客户端之分,而组播模式与单播模式不同,每个端都是以路由器或交换机做为中转广播站,任意一端向路由器或交换机发送消息,路由或交换机负责发送其他节点,每个节点都是同等的.所以在编程模式上用同一个类表示即可--MulticastSocket. MulticastSocket属于jdk提供的类,类路径为java.net.MulticastSocket,利用此类可以很方便地实现组播功能,下面展示一个简单例子,两个节点之间通过组播传输消息. ①节点一,指定组播地址为228.0.0.4,…
写在前面的话 2017年对我来说真是多灾多难的一年,在这过去的一年里发生的种种不幸,促使我下定决心一切要重新开始.在去年的夏天从公司裸辞后,来到了一个陌生的城市开启了新的求职历程,万万没想到的是,求职之路竟然如此艰难,以至于现在想起来还心有余悸.新的一年,我希望自己能有一个全新的面貌,那么就从坚持分享博客开始吧! Java的发展简史 在20世纪90年代,由Patrick Naughton和James Gosling带领Sun公司其他几个工程师一起组成一个工作小组,想要设计一种小型的计算机语言,主…
类的概述 Java是一门纯粹的面向对象(OOP)语言,面向对象程序是由多个对象所组成的,而对象的创建又必须依赖于类,那么什么又是类呢?在现实世界中,我们常常将多个具有相同或相似特征的对象分为一类,并冠以"xx类"的称呼,比如:我们将生活在水中.长有鳞片的动物称之为"鱼类",将长有翅膀.羽毛且会飞行的动物称之为"鸟类".在Java程序的世界中,类的含义与现实世界的相同,只不过在程序中必须先定义类,然后才会产生对象,这恰恰与现实世界中相反.通过以下例…
这是jdk1.5后版本才有的新特性,泛型,指定传入的类型.这样定义之后,这个list只能接收Integer的对象. 以前没有加这个,传入的都是Object类型的,取出来的时候要强制类型转换为自己想要的类型. 现在这样就不用强制类型转换了 在循环的时候也可以直接取出,提高效率,虽然你用肉眼是看不到. 例如: List<String> strList = new ArrayList(); strList.add("123");strList.add("456"…
近期由于需要编写能够使同一局域网中的Android客户端与PC端进行自动匹配通信功能的程序,学习并试验了JAVA组播与广播的内容,记录一些理解如下: 一.组播(多播) 背景知识:组播使用UDP对一定范围内的地址发送相同的一组Packet,即一次可以向多个接受者发出信息,其与单播的主要区别是地址的形式.IP协议分配了一定范围的地址空间给多播(多播只能使用这个范围内的IP),IPv4中组播地址范围为224.0.0.0到239.255.255.255. JAVA编程:java中通过MulticastS…
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /** * 需求:计算网页访问量前三名 * 用户:喜欢视频 直播 * 帮助企业做经营和决策 * * 看数据 */ object UrlCount { def main(args: Array[String]): Unit = { //1.加载数据 val conf:SparkConf = new Spa…
1.基本概念: a.DatagramPacket与DatagramSocket位于java.net包中 b.DatagramPacket表示存放数据的数据报,DatagramSocket表示接受或发送数据报的套接字 c.由这两个类所有构成的网络链接是基于UDP协议,是一种不可靠的协议. 之所以不可靠是因为发送方不负责数据是否发送成功,接收方收到数据时也不会 向发送方反馈成功消息,容易导致信息的丢失. 但是这种协议却是快捷的,比如CS(半条命)游戏就是基于UDP协议,否则我们估计 要玩一次游戏后就…
今天复习了一下java网络编程这方面(其实是之前没有学好),之前在linux下用c来做过一些例子,不过不好久没有用也就忘得一干二净了.不知道c/c++的东西不太好记,还是当初没好好学. 关于组播这方面,其实别的问题没有,<JAVA网络编程>这本书说得很明白了,但遇到其中一个很令人费解的api,如下: java MulticastSocket中的joinGroup(SocketAddress mcastAddr,NetworkInterface netif) 第一个参数为什么是SocketAdd…
In this example we are going to explain how to use MulticastSocket in Java, in order to enable a server to easily send information to multiple clients, which are all connected to the same port and address. We will describe the whole process, by creat…
Java解析OFFICE(word,excel,powerpoint)以及PDF的实现方案及开发中的点滴分享 在此,先分享下写此文前的经历与感受,我所有的感觉浓缩到一个字,那就是:"坑",如果是两个字那就是"巨坑"=>因为这个需求一开始并不是这样子的,且听我漫漫道来: 一开始客户与我们商量的是将office和PDF上传,将此类文件解析成html格式,在APP端调用内置server直接以html"播放" 经历一个月~,两个月~,三个月~~~…
▄︻┻┳═一『异常捕获系列』Agenda: ▄︻┻┳═一有关于异常捕获点滴,plus我也揭揭java的短 ▄︻┻┳═一根据异常自定义处理逻辑([附]java异常处理规范) ▄︻┻┳═一利用自定义异常来重构代码 先如下代码: @Test public void testException1() { System.out.println("begin..."); int[] arr = new int[]{1}; System.out.println(arr[1]); } 执行结果: ja…
生活点滴:java基础知识细化 一.前言 越是对一门语言深入了解,就会发现自己不知道的东西越多,这才是走向了正道,同样的,对于java语言特性的学习,笔者也只是初窥门径. 二.java基础知识思考 i=i++    首先我们来看一下“i=i++”这个语句的执行原理.    首先我们编译运行一下: 可以看到执行的结果为0,为什么呢,我们反编译A.class.     我们可以看到编号为2,3,6的三段汇编代码,其中2代表着将i的值读入一个变量之中,3表示将读到的i值自增,6代表将存入临时变量中的值…
  开发思路: 服务端两个Socket: UDP的DatagramSocket接收客户端消息. 广播multicastSocket 发送广播消息 客户端一个Socket: multicastSocket 接收服务端发来的广播 (不允许客户端直接发广播),同时发送点对点数据到UDP服务端DatagramSocket . javax.swing.* 提供客户端图形化界面 生疏知识点: 图形化界面按钮监控键盘 addActionListener(AbstractAction接口实现类);监听器. to…
什么是UDP协议: UDP协议是一种不可靠的网络协议,它在通信实例的两端各建立一个Socket 但这两个 Socket之间并没有虚拟链路,这两个Socket只是发送.接收数据报的对象.Java 提供了DatagramSocket对象作为基于UDP协议的Socket.使用DatagramPacket代表 DatagramSocket发送.接收的数据包.   UDP协议从问世至今已经被使用了很多年,虽然UDP协议目前应用不如TCP协议广泛,但 UDP协议依然是一个非常实用和可行的网络传输层协议.尤其…
JAVA环境变量JAVA_HOME.CLASSPATH.PATH设置详解 Windows下JAVA用到的环境变量主要有3个,JAVA_HOME.CLASSPATH.PATH. JAVA_HOME 指向的是JDK的安装路径,如C:\jdk1.5.0_06,在这路径下你应该能够找到bin.lib等目录. ( 今晚使用新系统配置,不知道怎么的需要加bin才可以在CMD运行,JAVA_HOME=C:\jdk1.5.0_06\bin; 下面是网上整理实践可使用贴上的,注意JDK和Eclipse必须同位数B…
1. 关于interface的定义 [修饰符] interface 接口名 [extends 父接口名列表]{ [public] [static] [final] 常量;[public] [abstract] 方法;} 注意,斜体的部分代表是缺省的,默认的,即便声明的时候不写,也会在编译时默认加上.尤其是常量需要注意,继承的子类不能修改接口中声明的常量.另外,修饰符写与不写都是public访问权限,因为接口中的方法永远是public权限的. 2 this与super 序号 区别点 this su…
前言 一切从下面这段代码开始 public static void test(String[] agrs){ Integer a = 1; Integer b = 2; System.out.println("a=" + a + ", b=" + b); swap( a, b ); System.out.println("a=" + a + ", b=" + b); } public static void swap( Int…
基于<Java编程思想>第四版 前言 虽然Java的泛型在语法上和C++相比是类似的,但在实现上两者是全然不同的. 语法 Java只需要一个<>就可定义泛型.在<>中可以使用任意符合Java语法要求的字符作为类型的标识,可以定义泛型类.泛型接口.泛型方法等. class A<T>{ T a; public <Q> void foo(Q a){ } } interface B<T>{ void foo(T a); } 实现 Java的泛…
基于<Java编程思想>第四版 前言 我们要操作一个类实例对象时,一般都要先知道这个类有哪些方法或者成员变量.反射就是在我们不知道这个类有哪些方法或成员变量时,使用特定方式得到类的这些信息,再根据特定规则去调用对应的方法操作类实例对象. 这中间有两个未知条件 如何记录类信息 如何确定规则 类信息是通过Class记录的,规则是由程序员定的. Class Class是一个记录类信息的类,每个类(包括Class)都会有一个Class对象.其实现也很好猜测和理解:编译器扫描完代码,就能知道类的具体信息…
基于<Java编程思想>第四版 构造与析构 在C++中通过构造函数和析构函数来保证:对象在使用前被正确初始化,在使用后被正确回收.Java中同样存在构造函数,但是没有析构函数.之所以没有析构函数是因为对象实际的存储期由GC决定,程序员无法明确析构函数何时会被执行. GC会在回收对象前执行Object的protected void finalize()方法,子类可以通过重写finalize()方法来清理资源.但是因为GC回收对象时间的不确定性,加上finalize()本身可能引入的问题,所以并不…
基于<Java编程思想>第四版 前言 "程序就是算法加数据结构",而算法就是控制语句加操作符,编写一个程序就是使用控制语句加操作符去操作数据结构,因此我从Java的控制语句.操作符以及如何组织数据结构开始入手.因为有C/C++的基础,所以不免会以对比的方式去理解Java. 控制语句 除了没有goto,Java的控制流程的关键字和C++是一样的,很好理解.不过Java中的break和continue除了C++的正常作用外(跳出或继续当前循环),还有类似C++中goto的功能,…
Idea中双击SHIFT可以搜索[Eclipse中也有],这个很重要,可以找到当前的项目中可以引擎的已有的类,不要再次自己发明轮子 各种Util先在基础库和开源库中找 Base64编码 guava:com.google.common.io.BaseEncoding commons-codec:org.apache.commons.codec.binary.Base64 各种摘要等算法都有了 [WARNING] /opt/work/2014/work/centos2017/webman/webma…
1.查找某个字符在字符串中第几次出现的位置 /** * 查找某个字符在字符串中第几次出现的位置 * @param string 要匹配的字符串 * @param i 第几次出现 * @param character 要匹配的字符 * @return 出现的位置 */ public static int getCharacterPosition(String string ,int i,String character){ // Matcher slashMatcher = Pattern.com…
包含表单设计器和运行展现 一个完整的应用 页面部分都是使用XML和XHTML进行服务端的组合出来的,具体逻辑有些复杂 设计器缺少一个最常用的:repeat,如果需要只能手动编写代码(参考官方文档步骤有些繁琐),只有Form Runner中可用 网上展示内容 http://www.orbeon.com/orbeon/home/ 设计 http://localhost:8080/orbeon/fr/orbeon/builder/summary applicationName/ Form Name P…
1. ==与equals的区别 ==是用来判断两个变量的值是否相等.要比较两个基本变量或引用变量是否相等,只能用==: equal用来判断两个独立对象里面的内容是否一样. 例子: String s1 = "111"; String s2 = "111"; s1与s2是两个独立的对象,如果直接用“s1==s2”则会返回false,虽然他们里面的内容一样,但是s1,s2为引用变量,其值实际上是一个内存地址,两个独立对象的内存地址 是不一样的.因此“s1==s2”的结果为…
今天刚学了java script,记录下学习新知识的点滴.以下是操作步骤.鉴于我是初级者,如有错误,恳请读者指正.万分谢谢. 1.新建一个文档(用NotePad软件,为了使得在浏览器中打开不是乱码,在软件的文件出找到编码,将其修改为UTF-8编码.或者点击谷歌浏览器中的右上角的三条杠,选择更多工具->编码->UTF-8),将其重命名(例:第一个java script.html   注:一定要把扩展名改为.html). 2.将其用记事本的格式打开,进行编写. 3.以下是编写的“按钮全选的实现”的…
从生存.制胜.发展三个方面入手,为大家展示出程序员求职与工作的一幅3D全景图像.本书中既有在公司中的生存技巧,又有高手达人的进阶策略,既有求职攻略的按图索骥,又有入职后生产环境的破解揭秘. 书中浓缩了程序员求职与工作.生存与发展的点滴经验,希望本书能够成为你的朋友.望本书能让即将走向工作岗位的程序员和已经成为程序员的朋友,对工作和软件行业做到既"知己"又"知彼",在入职前对职业状况清楚了解,入职后对职业方向清晰认识,使大家的工作更加得心应手,更加轻松愉快.   相关…
Thrift入门及Java实例演示 作者: Michael 日期: 年 月 日 •概述 •下载配置 •基本概念 .数据类型 .服务端编码基本步骤 .客户端编码基本步骤 .数据传输协议 •实例演示(java) . thrift生成代码 . 实现接口Iface .TSimpleServer服务模型 .TThreadPoolServer 服务模型 .TNonblockingServer 服务模型 .THsHaServer服务模型 .异步客户端 [一].概述 Thrift是一个软件框架,用来进行可扩展且…
1.你对自己的未来有什么规划?做了那些准备? 对于每个人来讲只有一次,七八十年的时间是一个即漫长然而又很短暂的过程,对于漫长与短暂的看法,由于每个人所处的环境的不同以及对人生看法的不同而有所差异.痛苦乏味的生活是漫长的,幸福多彩的人生是短暂的,不懈奋斗的人生是漫长的,荒度无事的生活是短暂的,这取决于一个人站在什么样的立场来看待这个问题.在我看来,时间的长短并不重要,关键是要活的有意义.活的精彩,这或许是一个在任何人看来都无庸置疑的道理.每个人都希望自己的人生道路过得有意义,也都知道要为此付之以努…