




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、任务六:无连接网络聊天程序设计单元五:Java语言高级程序设计教学目标知识目标UDP 协议的概念;数据包概念;数据报套接字概念;网络通信编程的步骤。能力目标能会编写UDP程序;能会进行UDP协议操作。内容4任务陈述123知识准备任务实施任务拓展任务实训5 1. 任务陈述任务描述本次任务要基于UDP实现一个局域网聊天系统。任务要求如下:客户端采用UDP协议与服务器连接客户端可以设置服务器地址与端口服务器可以维护客户端个人信息服务器可以记录客户端状态信息 2. 知识准备6.1 基于UDP的网络编程原理 2. 知识准备6.2 UDP网络编程相关类的使用6.2.1 DatagramPacket类Dat
2、agramPacket类表示数据包,起到数据容器的作用。数据包用来实现无连接包投递服务。每条报文仅根据该包中包含的信息从一台机器路由到另一台机器。从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到达。不对包投递做出保证。常用构造方法如下:DatagramPacket(byte data, int size) 构造 DatagramPacket,用来接收长度为 size 的数据包。DatagramPacket(byte data, int size, InetAddress I, int port) 构造数据报包,用来将长度为 size 的包发送到指定主机上的指定端口号。
3、 2. 知识准备6.2.2 DatagramSocket类DatagramSocket类表示用来发送和接收数据包的套接字,用于发送或接收 DatagramPacket。DatagramSocket构造方法:DatagramSocket() 构造数据报套接字并将其绑定到本地主机上任何可用的端口。DatagramSocket(int port)创建数据报套接字并将其绑定到本地主机上的指定端口。其他常用方法:void send(DatagramPacket d) 从此套接字发送数据包。void receive(DatagramPacket p) 从此套接字接收数据包。void close() 关闭此
4、数据报套接字。 2. 知识准备 【例5-22】演示通过UDP协议通信的过程。 要求:DatagramServer类接收用户从控制台输入的字符串,并将字符串发送给DatagramClient。DatagramClient接收并显示收到的字符串。当用户输入 end 时,DatagramServer发送完就退出运行。DatagramClient接收到 end 字符串后也立刻退出运行。 2. 知识准备服务器端关键代码ds = new DatagramSocket(SERVER_PORT);BufferedReader dis = new BufferedReader(new InputStreamRe
5、ader(System.in);System.out.println(服务器正在等待输入);InetAddress ia = InetAddress.getByName(localhost);while(true)String str = dis.readLine();buffer = str.getBytes();ds.send(new DatagramPacket(buffer, str.length(), ia, CLIENT_PORT);if( (str = null) | str.equals(end) )break; 2. 知识准备客户端关键代码ds = new DatagramS
6、ocket(CLIENT_PORT);System.out.println(客户机正在等待服务器发送数据);while(true)DatagramPacket p = new DatagramPacket(buffer, buffer.length);ds.receive(p);String psx = new String(p.getData(), 0, p.getLength();System.out.println(psx);if(psx.equalsIgnoreCase(end) break;System.out.println(客户机退出运行); 2. 知识准备运行结果: 2. 知识
7、准备6.2.3 网络编程实现广播广播通信的特点是一个发送,多个接收。广播使用的地址范围:55广播使用的类:MulticastSocket和DatagramPacket。 2. 知识准备发送广播消息的关键代码:MulticastSocket s = new MulticastSocket(6789); / 构造广播对象/ 加入广播组InetAddress group = InetAddress.getByName(); s.joinGroup(group); / 创建数据包String msg = Hello;DatagramPacket hi = new DatagramPacket(msg.
8、getBytes(), msg.length(), group, 6789); / 设置发送范围、发送s. setTimeToLive(1);s.send(hi); 2. 知识准备接收广播消息的关键代码:MulticastSocket s = new MulticastSocket(6789); / 构造广播对象/ 加入广播组InetAddress group = InetAddress.getByName(); s.joinGroup(group);/ 准备缓冲区byte buf = new byte1000; DatagramPacket recv = new DatagramPacket
9、(buf, buf.length); s.receive(recv); / 接收数据s.leaveGroup(group); /离开分组 3. 任务实施实现思路创建一个类UdpDialogFrame,既作为信息发送端,又作为信息接收端。程序运行时,显示本机IP地址和所用端口号。允许用户输入信息发送目标的IP地址和端口号。在线程体中接收数据包,在TextListener接口的文本变化事件处理方法中发送数据包。定义类UdpDialogFrame继承Frame实现TextListener, Runnable接口。在UdpDialogFrame类的构造方法中构造窗口界面,启动数据接收线程在textVa
10、lueChanged方法中发送信息在run方法中接收并显示信息创建主类UdpDemo,创建UdpDialogFrame类对象 3. 任务实施事件处理关键代码:int nPort = Integer.parseInt(m_tfDestPort.getText();InetAddress destIP = InetAddress.getAllByName(m_tfDestIP.getText();if (destIP.length 0) DatagramPacket pak = new DatagramPacket(data,data.length, destIP0, nPort);/省略异常处理
11、DatagramSocket skt = new DatagramSocket();System.out.println(“senddata=”);skt.send(pak); 3. 任务实施接收线程关键代码:DatagramSocket skt = new DatagramSocket(980);byte data = new byte1024;DatagramPacket pak = new DatagramPacket(data, data.length);skt.receive(pak);if (pak.getLength() 0) String s = new String(data
12、); String t = m_taGet.getText();System.out.println(“getdata=” + pak.getLength() + “n”);if (t.endsWith(n) m_taGet.setText(t + s); else m_taGet.setText(t + “n” + s); 4.任务拓展URL类:可以定位互联网上任意一台服务器上的文件。一个URL对象 代表一个统一资源定位符,它是指向互联网“资源”的指针。资源可以是简单的文件或目录,也可以是对更为复杂的对象的引用,例如对数据库或搜索引擎的查询。URL 类提供 API 来访问 Internet
13、上的信息。URL类的构造方法:URL(String urlname) 根据 String 表示形式创建 URL 对象.URL(String protocol, String hostname, int port, String path) 根据指定 protocol、host、port 号和 file 创建 URL 对象.URL(String protocol, String hostname, String path) 根据指定的 protocol 名称、host 名称和 file 名称创建 URL. 4.任务拓展【例5-24】演示URL类中几个方法的使用。URL url = new URL(:80/root/htmlfiles/index.html);System.out.println(URL中的主机是:+url.getHost();System.out.println(使用的协议是:+url.getProtocol();System.out.println(使用的端口是:+url.getPort();Sy
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- DB54T 0495-2025 高寒草甸退化分级标准
- 二零二五年度房地产联合开发合同-文化产业园地产合作
- 2025版生物科技产业合伙投资框架协议
- 2025版特色药品代理销售合作合同
- 二零二五年脚手架租赁服务与施工协调合同
- 2025版路灯工程知识产权共享合同范本
- 2025版会议场地租赁及绿色环保设施配套合同
- 2025版瑜伽馆投资合作协议
- 二零二五年船舶燃油行业标准制定与实施合同
- 2025年度智能家居安装与维护服务合同
- JG/T 348-2011纤维增强混凝土装饰墙板
- 2025云南楚雄州金江能源集团有限公司选聘中层管理人员7人笔试参考题库附带答案详解析版
- 2025年征兵心理测试题及答案
- T/CECS 10274-2023防沉降井盖
- 消防吸水操作训练课件
- 新能源电池商业计划书
- 2025年法学概论考试有效模拟试题及答案
- (高清版)DGJ 08-10-2004 城市煤气、天然气管道技术规程
- 《营养指南课件:食品标签与营养成分解读》
- TCHSA-023-2023-口腔综合治疗台水路污染控制与管理指南
- 儿科三基护理试题及答案
评论
0/150
提交评论