Java网络编程实验指导书.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java网络编程实验指导书

广州大学计算机科学与教育软件学院 2014年7月 目录 实验一:UDP套接字编程(4学时) …………………………………………………………3 实验二:TCP套接字编程(8学时) …………………………………………………………8 实验三:HTTP协议编程(6学时) …………………………………………………………11 实验一:UDP套接字编程 指导思想 UDP协议在IP协议之上添加的功能虽然非常有限,但UDP通信比面向连接的协议更高效,适合每次发送的数据量小,但发送频繁的通信;UDP数据报首部短小,建立和处理首部信息花费的时间短,适合实时或要求延迟非常低的通信;在UDP通信中,一个数据报可以同时发往多个接收者,适合1对多的通信。因此,基于UDP协议的应用仍然非常广泛,需要学生熟练掌握UDP协议应用编程技术。 实验目的 通过实验,使学生熟悉UDP协议应用编程范型,掌握Java对UDP协议的支持类,并能熟练运用。 相关知识点 3.1 UDP协议的特点 在因特网体系结构中,传输层位于网际层和应用层之间。互联网上的任何数据都要经过IP协议进行传输,IP协议是一种无连接和不可靠的协议,它只负责IP数据包在网络中的传输,不进行差错检查,不保证按序到达;同时,由于IP数据包只有IP地址,只能标识通信主机,无法标识源端主机和目标主机上的通信进程。因此,这些在网际层没有实现的功能,必须在传输层实现,以便向应用层提供更高质量的通信服务。 UDP协议是传输层中最简单的协议,主要功能是在网际层之上提供协议端口定义功能,标识源主机和目标主机上的通信进程。UDP数据报的格式如图1所示。 0 15 31 UDP源端口号(16位) UDP目标端口号(16位) UDP长度(16位) UDP校验和(16位) 数据(必须填充为16的倍数) 图1 UDP数据报格式 UDP数据报又叫做用户数据报,有8个字节的固定首部,前4个字节为源端口号和目标端口号,后4个字节为用户数据报长度和校验和字段。 UDP数据报长度字段实际上是不需要的。因为用户数据报要封装在IP数据包中,在IP数据包首部中有2个字段,一个是IP数据包长度,一个是IP数据包首部长度,两者相减即是UDP数据报长度。这两个字段长度均为16位长,因此,UDP数据报的最大长度为65535-8-20=65507字节,其中,20为IP首部固定字段长度,8为UDP固定首部长度。实际上,许多使用UDP协议的应用协议,发送和接收的数据报的长度远小于65507字节,如DNS和TFTP的数据报的长度不超过512字节,NFS协议数据报的长度为8,192字节。许多操作系统不支持8k以上的UDP数据报,超过8k字节的数据报,要么截断,要么丢弃,不会通知Java应用程序。 UDP协议在IP协议之上添加的功能非常有限,它是一个无连接的和不可靠的协议,那么,它存在的理由是什么呢?理由如下: UDP通信比面向连接的协议更高效,适合每次发送的数据量小,但发送频繁的通信。 UDP数据报首部短小,建立和处理首部信息花费的时间短,适合实时或要求延迟非常低的通信。 在UDP通信中,一个数据报可以同时发往多个接收者,适合1对多的通信。 在物理网络服务质量高的情况下,可以弥补UDP协议的不足,实现高效可靠的通信。 3.2 UDP协议应用编程范型 在UDP客户/服务器模式应用中,客户端和服务器端的套接字没有本质的差别,只不过服务器端的套接字一般要绑定在一个周知端口上。图2是UDP客户/服务器模式应用的一般流程图。 客户端 服务器端 阻塞,直至请求数据报到达 阻塞,直至响应数据报到达 是 图2 UDP客户/服务器模式应用的一般流程图 如果客户端发送的请求数据报没有到达服务器,或服务器发回的响应报文不能送达客户端,客户端将一直阻塞。如何处理这种情况呢?方法一是设置最大阻塞时间,超过该时间后抛出异常,客户程序转入异常处理过程。方法二是在客户端除主线程外,将生成并发送请求数据报和接收服务器响应数据报这两个任务分别放在不同的线程中处理。 如果服务器端只有一个线程,当处理请求数据报时,就无法接收新的客户请求数据报。当客户端数量增加时,遗漏客户请求数据报的情况将更加严重。怎么办?同样可以采用多线程编程技术处理。将接收客户请求报文和产生响应报文的任务放在不同现

文档评论(0)

wuyuetian + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档