当前课程知识点:JAVA程序设计进阶 >  第五章 网络编程(下) >  5.3 使用数据报进行广播通信 >  Video

返回《JAVA程序设计进阶》慕课在线视频课程列表

Video在线视频

Video

下一节:Video

返回《JAVA程序设计进阶》慕课在线视频列表

Video课程教案、知识点、字幕

这一节我们将介绍

如何使用数据报

来进行广播通讯的原理和方式

那利用数据报包呢

我们也可以进行这个广播通讯

当然广播你可能也不能说

做一个大范围的广播

在一个小范围的局域网里面

你做广播还是有可能的

那怎么做广播呢

原来DatagramSocket的话

它只是允许数据报放一个目的地址

但如果我们用MulticastSocket的话这类

它可以把数据报以广播的方式

发送到所有监听的该端口的客户

所以我们就利用MulticastSocket

在客户端来监听广播

就是服务器广播出来的这个数据

下面我们看一个例子

我们这个例子叫MulticastClient.java

然后我们看一下它的主方法

主方法里面的第一行

就是MulticastSocket socket new MulticastSocket(4446)

首先构造一个广播Socket对象

然后里面一定要指明这个端口号4446

这时候我们又定义了

一个互联网的地址对象InetAddress

然后对象名字叫address

构造它的时候给了它一个

这个IP地址230.0.0.1

好 这时候我们把Socket下面构造的

广播Socpet对象joimGroup (address)

也就是说我们这广播对象

我们加入一个组

加入了哪个组呢

就是由这个地址InetAddress这个

address这个对象所标识的这个组

然后DatagramPacket packet

这是我们马上要构造的

一个数据报包的对象

那下面的话

我们要站在客户端的角度

就是要接收广播信息了

循环五遍for int i=0

i小于5 i++

然后定义了一个这个字节数组buf

它的这个长度是256

这时候我们构造一个数据报包

new DatagramPacket

它所对应的对象是buf和 buf.length

然后这个时候我们通过socket

它的received方法

接收到这个广播下来的

这个数据报包

接收到了以后

我们就要读取它这些信息啦

那怎么读呢

那就通过packet.getData的方法

得到它的信息

并把它转换成一个字符串

然后复制给receive

然后紧接着给打印出来

Quote of theMoment received

就那个时刻的时候的

这些股票这个信息是什么

循环五次接收完了以后

我们就socket.leaveGroup(address)

也就说我们这广播用的这个socket的话

我们就离开我们所关注的那个组

然后最后socket进行关闭

这个是我们的客户端

那我们看一下

如果做这个广播的服务端呢

我们看一下这个类

public class MulticastServer

主方法里面就是new MulticastServerThread.start

那我们看

MulticastServerThread

它到底什么内容

它extends QuoteServerThread

继承了QuoteServerThread这个类

那我们看一下

这里面定义的成员这个变量

private long FIVE-SECOND=5000

然后它的构造方法里面

就是调用了副类的各个方法

那我们看一下它的run方法

public void run

run方法里面是这样

while(moreQuotes)

还有更多的这些股票信息化

try buf

buf=new byte256

也就是byte buf=new byte等于256

那我构造一个字节数组

然后下面的话

我需要把从我的那个股票的文件中

把这股票信息读出来

那就我构造一个string对象dstring

然后呢如果能读出来

就通过getNextQuote方法

把这股票信息读出来复制给dstring

如果股票信息读完了

那就我把当前日期

那个复制给我们这个dstring对象

紧接着把dstring通过它的byte方法

转换成一个字节数组buf

这时候我们再往下我们就构造

这么一个一个这个组了

就InetAddress group

=InetAddress.getByName(230.0.0.1)

构造了这么一个

要用于广播的这么一个地址

然后呢我们看一下

接着往下要往外广播的

数据报包是怎么构造的

那就Datagrampacket packet=new Datagrampacket

然后前两个参数分别是我们的

要发送的内容以及长度

就是我们的字节数组buf以及buf.length

那要发到哪个目标地址呢

那就是上面的group端口号是4446

那我们通过我们的这个socket把它send出去

把它发送出去

发送的对象就是packet

那每发送一次下面就要sleep

休眠一段时间 多长

0到5秒 休眠这段时间

最后的话

我们把那个moreQuotes作为false

因为这所有都读完了

然后最后的话把这个socket给关闭掉

最后关闭掉

那这个例子

大家在自己程序上运行的时候

注意你肯定需要先运行客户端

而不是运行服务端

就是说先运行客户端后运行服务端

因为这时候我们是广播

是通过服务器往客户端广播

所以客户端先得竖起耳朵

你才能够听到服务端

广播来的那个信息

那就是建议大家

尝试运行的时候可以拿

先拿两个虚拟机

每一个虚拟机

JAVA虚拟机

各自运行一个Client这个程序

然后再拿第三个虚拟机

去运行server程序

那在server程序运行过程当中

这前面两个运行的Client程序

就会大概在0到5秒之间

就会收到一次

服务端广播过来的股票信息

那总共server端

会循环大概五次左右

直到它的这个服务端的

这股票信息都已经广播完毕了

在这一节

我们通过一个例子介绍了

如何使用数据报来实现广播的机制

JAVA程序设计进阶课程列表:

第一章 线程(上)

-1.0 导学

--Video

-1.1 线程的基本概念

--Video

-1.1 线程的基本概念--作业

-1.2 通过Thread类创建线程

--Video

-1.2 通过Thread类创建线程--作业

-1.3 线程的休眠

--Video

-1.3 线程的休眠--作业

-1.4 Thread类详解

--Video

-1.5 通过Runnable接口创建线程

--Video

-1.5 通过Runnable接口创建线程--作业

-1.6 线程内部的数据共享

--Video

第二章 线程(中)

-2.0 导学

--Video

-2.1 线程同步的思路

--Video

-2.2 线程同步的实现方式—Synchronization

--Video

-2.3 线程的等待与唤醒

--Video

-2.4 后台进程

--Video

-2.5 线程的生命周期与死锁

--Video

-2.6 线程的调度

--Video

第三章 线程(下)

-3.0 导学

--Video

-3.1 线程安全与线程兼容与对立

--Video

-3.2 线程的安全实现-互斥同步

--Video

-3.3 线程的安全实现-非阻塞同步

--Video

-3.4 线程的安全实现-无同步方案

--Video

-3.5 锁优化

--Video

第四章 网络编程(上)

-4.0 导学

--Video

-4.1 URL对象

--Video

-4.2 URLConnection对象

--Video

-4.3 Get请求与Post请求

--Video

-4.4 Socket通信原理

--Video

-4.5 Socket通信实现

--Video

第五章 网络编程(下)

-5.0 导学

--Video

-5.1 Socket 多客户端通信实现

--Video

-5.2 数据报通信

--Video

-5.3 使用数据报进行广播通信

--Video

-5.4 网络聊天程序

--Video

第六章 Java虚拟机

-6.0 导学

--Video

-6.1 Java虚拟机概念

--Video

-6.2 Java虚拟机内存划分

--Video

-6.3 Java虚拟机类加载机制

--Video

-6.4 判断对象是否存活算法及对象引用

--Video

-6.5 分代垃圾回收

--Video

-6.6 典型的垃圾收集算法

--Video

-6.7典型的垃圾收集器

--Video

第七章 深入集合Collection

-7.0 导学

--Video

-7.1 集合框架与ArrayList

--Video

-7.2 LinkedList

--Video

-7.3 HashMap与HashTable

--Video

-7.4 TreeMap与LinkedHashMap

--Video

-7.5 HashSet

--Video

第八章 反射与代理机制

-8.0 导学

--Video

-8.1 Java反射机制

--Video

-8.2 Java静态代理

--Video

-8.3 Java动态代理

--Video

-8.4 Java 反射扩展-jvm加载类原理

--Video

-8.5 Java进阶课程总结

--Video

Video笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。