《(35)--第11章-Java程序设计网络编程(2).ppt》由会员分享,可在线阅读,更多相关《(35)--第11章-Java程序设计网络编程(2).ppt(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第11章 网络编程(2)Java程序设计第2节 UDPUDP传输传输4任务陈述任务陈述123知识准备知识准备任务实施任务实施任务拓展任务拓展任务实训任务实训5Java程序设计知识目标UDP 协议的概念;数据包概念;数据报套接字概念;网络通信编程的步骤。能力目标能会编写UDP程序;能会进行UDP协议操作。教学目标Java程序设计1 任务陈述任务描述:任务描述:本次任务要基于UDP实现一个局域网聊天系统。运行结果:运行结果:Java程序设计2 知识准备11.3 基于UDP的网络编程1 基于UDP的网络编程原理建立发送端,接收端。建立数据包。调用Socket的发送接收方法。关闭Socket。Java
2、程序设计2 知识准备2 UDP网络编程相关类的使用(1)DatagramPacket类表示数据包,常用构造方法如下:DatagramPacket(byte data,int size)构造 DatagramPacket,用来接收长度为 size 的数据包。DatagramPacket(byte data,int size,InetAddress I,int port)构造数据报包,用来将长度为 size 的包发送到指定主机上的指定端口号。Java程序设计例如:设计一个发送数据的数据包byte bys=new byte1024;/创建一个字节数组,因为数据包创建时要求数据以字节数组的形式传送by
3、s=”我们练习UDP来发送数据,我就是数据”.getBytes();/将一个字符串转换成字节数组InetAddress ia=InetAddress.getByName(“LocalHost”);/确定通信的主机对象DatagramPacket dp=new DatagramPacket(bys,bys.length,ia,9999);/创建数据包Java程序设计DatagramPacket类DatagramPacket类的其他成员方法:InetAddress getAddress():获取数据包的 IP 地址 byte getData():返回数据包中的数据,返回字节数组getLength(
4、):返回将要发送或接收到的数据的长度getPort():返回通信的端口号Java程序设计2 知识准备(2)DatagramSocket类表示用来发送和接收数据包的套接字其他常用方法:void send(DatagramPacket d)从此套接字发送数据包。void receive(DatagramPacket p)从此套接字接收数据包。void close()关闭此数据报套接字。DatagramSocket构造方法:DatagramSocket()构造数据报套接字并将其绑定到本地主机上任何可用的端口,发送端DatagramSocket(int port)创建数据报套接字并将其绑定到本地主机上
5、的指定端口,接收端Java程序设计2 知识准备3 UDP传输(1)发送端思路1:建立UDP的socket服务2:将要发送的数据封装成数据包3:通过UDP的socket服务,将数据包发送出4:关闭资源Java程序设计2 知识准备(2)接收端思路1:建立UDP的socket服务2:通过receive方法接收数据3:将收到的数据存储到数据包对象中4:通过数据包对象的功能来完成对接收到数据进行解析5:可以对资源进行关闭Java程序设计3 任务实施 实现思路创建一个类DatagramFrame,既作为信息发送端,又作为信息接收端。通过构造方法的两个参数确定是发送端还是接收端。定义类DatagramFra
6、me继承JFrame实现ActionListener,Runnable接口。在DatagramFrame类的带参构造方法中构造窗口界面在ActionPerformed方法中发送信息在run方法中接收并显示信息Java程序设计3 任务实施任务代码Java程序设计4 任务拓展网络编程实现广播广播通信的特点是一个发送,多个接收。广播使用的地址范围:224.0.0.0239.255.255.255广播使用的类:MulticastSocket和DatagramPacket。Java程序设计4 任务拓展发送广播消息的关键代码:MulticastSocket s=new MulticastSocket(67
7、89);/构造广播对象/加入广播组InetAddress group=InetAddress.getByName(228.5.6.7);s.joinGroup(group);/创建数据包String msg=Hello;DatagramPacket hi=new DatagramPacket(msg.getBytes(),msg.length(),group,6789);/设置发送范围、发送s.setTimeToLive(1);s.send(hi);Java程序设计4 任务拓展接收广播消息的关键代码:MulticastSocket s=new MulticastSocket(6789);/构造
8、广播对象/加入广播组InetAddress group=InetAddress.getByName(228.5.6.7);s.joinGroup(group);/准备缓冲区byte buf=new byte1000;DatagramPacket recv=new DatagramPacket(buf,buf.length);s.receive(recv);/接收数据s.leaveGroup(group);/离开分组Java程序设计5 任务实训一、实训目的熟练数据报的发送和接收;能使用DatagramPacket类创建数据报对象并在应用程序之间建立传送数据报的通讯连接。二、实训内容用UDP协议实现聊天程序。