Java教案.docx
- 文档编号:4417574
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:56
- 大小:53.07KB
Java教案.docx
《Java教案.docx》由会员分享,可在线阅读,更多相关《Java教案.docx(56页珍藏版)》请在冰豆网上搜索。
Java教案
南昌航院课程教案
(2005~2006学年第一学期适用)
课程名称:
JAVA网络编程
班级:
022014~15
任课教师:
李佳凯
采用教材:
《Java网络编程与分布式计算》
上课时间:
2005~2006第一学期
上课地点:
D501
学时分配:
总学时:
48讲课:
30
本课程主要内容:
Java网络编程简介
网络基础
Java网络应用程序模型
Internet寻址
JavaI/O数据流
UDP用户数据报协议
TCP传输控制协议
多线程应用程序
URL&HTTP超文本传输协议
RMI分布式概述
第一章联网原理
教学目的和要求:
1要求学生理解网络概念和意义
2要求学生理解网络怎样使用包和地址传输信息,提高学生的逻辑思维能力。
3要求掌握利用OSI参考模型的层,复习Internet的主要协议,包括IP协议,TCP协议和UDP协议。
4要求防火墙和代理服务器对用户和开发者的影响。
重点:
1.原理参考模型各层。
2.IP协议。
3.网络各种基本概念.
难点:
原理参考模型的层。
每层的意义及其功能。
教学方法:
多媒体教学
学时分配:
2个学时
作业安排:
画出原理体系结构参考模型的每层,详细说明每层的功能。
并比较OSI模型与TCP/IP模型。
1.1网络编程简介
计算机网络形式多样,内容繁杂。
网络上的计算机要互相通信,必须遵循一定的协议。
目前使用最广泛的网络协议是Internet上所使用的TCP/IP协议。
设问:
那么网络编程的目的是什么呢?
直接或间接地通过网络协议与其他计算机进行通讯。
讨论:
如何准确的定位网络上一台或多台主机?
找到主机后如何可靠高效的进行数据传输?
在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机。
而TCP层则提供面向应用的可靠的或非可靠的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的。
目前较为流行的网络编程模型是客户机/服务器(C/S)结构。
即通信双方一方作为服务器等待客户提出请求并予以响应。
客户则在需要服务时向服务器提出申请。
服务器一般作为守护进程始终运行,监听网络端口,一旦有客户请求,就会启动一个服务进程来响应该客户,同时自己继续监听服务端口,使后来的客户也能及时得到服务。
1.2网络基本概念
那么我们需要谈到网络的几个基本概念:
IP地址:
标识计算机等网络设备的网络地址,由四个8位的二进制数组成,中间以小数点分隔。
如:
166.111.136.3,166.111.52.80
主机名(hostname):
网络地址的助记名,按照域名进行分级管理。
如:
端口号(portnumber):
网络通信时同一机器上的不同进程的标识。
如:
80,21,23,25,其中1~1024为系统保留的端口号
服务类型(service):
网络的各种服务。
如:
http,telnet,ftp,smtp
思考题:
http,telnet,ftp,smtp分别是什么协议,作什么用的?
在什么层次上的协议?
1.3网络的参考模型
计算机网络(computernetwork)——
自主计算机(autonomouscomputers)的互联(interconnected)组合。
ISO网络参考模型
TCP/IP参考模型
原理体系结构
——OSI的七层协议体系结构既复杂又不实用,但其概念清楚;TCP/IP的协议得到广泛承认,但实际上没有一个完整的体系结构;采用折衷的办法,即综合OSI和TCP/IP的优点,采用一种原理体系结构。
原理体系结构:
(1)物理层:
透明地传送比特流。
(2)数据链路层:
在两个相邻接点的线路上无差错地传送以帧为单位的数据。
(3)网络层:
选择合适的路由,数据的传送单位是分组或包。
(4)运输层(传送层、传输层或转送层):
根据下面通信子网的特性最佳地利用网络资源,并以可靠的方式,为两端主机的进程之间,建立一条运输链路,以透明地传送报文。
或者向上一层进行通信的两个进程之间提供一个可靠的端到端的服务。
(5)应用层:
确定进程之间通信的性质以满足用户的需要。
例如,作用户代理等。
OSI模型与TCP/IP模型之间的比较
见讲义
TCP/IP协议簇:
网络层:
IP协议
传输层:
TCP协议、UDP协议、ICMP协议
应用层:
HTTP协议、SMTP协议、FTP协议、POP3协议……
自学:
传输层:
TCP协议、UDP协议、ICMP协议
应用层:
HTTP协议、SMTP协议、FTP协议、POP3协议……
1.4IP协议
设问:
什么是IP协议?
IP协议是一个包交换网络协议。
信息以IP包(也称为IP数据报(datagram))的形式在两台主机(host)之间交换,各IP包之间没有任何关联。
IP数据报格式
讲义P21
版本(version)
首部长度(headerlength)
服务类型(typeofservice)
总长度(totallength)
标识(identification)
协议类型(protocoltype)
首部校验和(headerchecksum)
源IP地址(sourceIPaddress)
目的IP地址(destinationIPaddress)
数据报选项(datagramoptions)
自学:
IP地址与主机名称
1.5TCP/UDP
TCP
通过端口来区分程序间的若干通信数据的传送是按字节流的方式顺序传播.
UDP
同样通过端口来区分程序间的若干通信数据的传送是按数据报的方式传播,包到达的先后顺序不固定。
TELNET,HTTP,FTP,SMTP,POP3以上协议均借助TCP协议实现
本章复习总结:
网络编程概念
IP协议
原理参考模型各层。
作业安排:
画出原理体系结构参考模型的每层,详细说明每层的功能。
并比较OSI模型与TCP/IP模型。
第二章Java概述
教学目的和要求:
1.要求学生了解Java语言的历史,设计目标和特性。
2.要求学生理解Java虚拟机和运行时环境的多样性。
3要求了解核心JavaAPI和重要的网络和applet安全性考虑。
4.要求了解Java当中异常处理,熟悉常见的异常类型,了解异常发生的原因。
重点:
1.Java虚拟机和运行时环境的多样性。
2.Java当中异常处理和系统属性。
难点:
Java虚拟机和运行时环境的多样性。
教学方法:
多媒体教学
学时分配:
2个学时
作业安排:
Java虚拟机是如何运行的?
运行时环境的多样性有什么意义?
JAVA概述
经过了上章对网络的简单回顾,这章让我们一起JAVA是一门什么样的语言,以及了解Java的内涵。
设问:
什么是java?
java的内涵是什么?
Java的内涵分三个层次:
JAVA程序设计语言:
为java平台编写软件的程序设计语言。
JAVA平台:
为执行用java编写的软件提供支持的各种运行环境。
JAVA应用程序接口:
提供图形化用户界面、数据存储、数据处理、I/O以及网络支持的内容丰富、功能完善的类库。
2.1JAVA程序设计语言
2.1.1Java的历史和起源
自学:
Oak
设计目标:
为嵌入式系统市场开发一种语言。
2.1.2Java语言的特性
面向对象:
类,对象
简单性:
和C++比较的简单,没有可以用来访问内存的指针,同时,java也不允许多重继承。
自动垃圾收集:
当申明一个对象的时候,JVM(JavaVirtualMachine)自动为它分配适当数量的内存。
当不再需要此对象时,将为此对象的引用赋一个空值,自动垃圾收集线程将默默地回收这些内存。
可移植性:
Java中立于操作系统和硬件——Java软件可以运行在各种各样的平台上,而不需要程序员重新编译软件或修改源代码。
多线程程序设计:
多线程语言支持并发处理,但使用的是供应用程序代码和数据共享的内存。
安全性:
在安全性方面,Java有严格的重要的限制,比如:
网络访问被限制到单台机器,即applet从那儿会被加载的机器。
Applet不能被绑定到本地端口,以伪装成合法服务。
不允许访问文件,不管是读取还是写入。
虽然可以自由使用线程,但是也许不能启动外部线程。
支持Internet:
JAVA语言提供了内容丰富、功能完善的联网API.
2.2JAVA平台
Java源代码被编译成在单个CPU体系结构上执行,而实际并不存在运行JAVA机器代码的实际硬件芯片。
JVM(JAVA虚拟机):
Java机器代码,是一组特殊的软件执行的,这组软件模拟能够理解JAVA字节码的CPU芯片。
这个软件就是JVM.
JRE(JAVA运行时环境)
●JAVA2平台(J2SE,J2ME,J2EE)
●浏览器运行时环境
●Web服务器运行时环境
●容器
2.3JAVA应用程序接口
API提供了让JAVA做实际工作的丰富的类和组件集
主要的包
处理网络编程的类的主要部分
java.rmi支持远程方法调用的包的集合
java.applet支持小应用程序的包的集合
javax.servlet在web服务器内部运行,允许JAVA软件为web站点动态生成内容的扩展。
2.4JAVA中异常处理
异常:
发生在运行时,且以对象的形式表现出来的异常情况。
熟悉常见的异常类型:
AWTError
NoClassDefFoundError
OutOfMemoryError
NoSuchElementException
NullPointerException
SecurityException
自学:
处理异常
了解异常发生的原因:
1.联网中,最常见的原因是与网络连接的状态有关。
2.安全限制。
思考题:
为什么java要引入异常处理机制?
2.5JAVA网络编程所涉及的层次
网络应用程序模型:
客户机/服务器
胖客户——C/S
瘦客户——B/S
从两层到多层(3-Tier、n-Tier)
对等网(p2p)
P8-11讲义
本章复习总结:
1.Java虚拟机和运行时环境的多样性。
2.Java当中异常处理。
作业安排:
Java虚拟机是如何运行的?
运行时环境的多样性有什么意义?
第三章Internet寻址
教学目的和要求:
1要求学生理解网络地址的概念和意义
2要求学生理解IP地址和域名系统的概念,以及他们的关系,提高学生的逻辑思维能力。
3掌握利用InetAddress类获取机器的IP地址(本地主机或者其他主机)的方法,从而加深对DNS服务的理解,培养学生进一步对Java语言的进行网络的编程方便,快捷的理解。
重点:
1.域名系统(DNS)
2.IP地址的结构和种类(A,B,C,D,E)
3.InetAddress类及其方法,例如getHostName(),getHostAddress()等等
难点:
.InetAddress类的使用和它的主要方法:
getHostName(),getHostAddress().
教学方法:
多媒体教学+试验课
学时分配:
6个学时(讲课4+试验2)
作业安排:
1.编写一段程序使其能够根据域名,显示其IP地址。
2.编写一段程序使其能够显示本机的IP地址。
Internet寻址
通过前面两章的学习,我们已经初步掌握了,网络的基本知识,也对Java语言进行了,简单的回顾。
那么我们这节课要讲述的就是网络编程:
网络编程→internet→Internet寻址
介绍本章结构:
1局域网地址
2IP地址
3域名系统
4用Java进行Internet寻址
3.1局域网地址
讨论:
如何在网络上识别和定位某台特定的机器?
网络地址的概念的引入,没有网络地址,我们就不能识别数据包的发送者和发送数据包的目的地。
网络地址的概念:
连接到LAN的设备拥有它们自己惟一的物理或硬件地址。
然后,物理地址或硬件地址不是Java程序员关心的范畴。
思考题:
为什么Java程序员无需关心在LAN中路由的细节?
实际上,不能用Java访问数据链路协议,因此Java是支持TCP/IP的,我们让Java访问网络结构的更高层。
复习:
P4,Internet的体系结构
IP协议是高于数据链路层的第三层——网络层的协议,它可以被Java支持。
探讨IP协议必须谈到IP地址,引入下一个问题:
3.2IP地址
设问:
什么是IP地址?
每个设备都被分配一个惟一的IP地址作为标识符。
IP地址可以是静态的,可以是动态的,用例子解释静态和动态的含义和不同。
拨号——动态,LAN——指定IP,静态
IP地址是惟一的,不可以并发的共享IP地址,也就是说不同的机器有不同的IP地址。
讨论:
并发IP地址会出现什么现象?
如果两台机器拥有相通的IP地址会怎么样?
无法把IP数据包发到正确的位置,无法识别数据包的发送者和目的地。
例外情况:
内部网(intranet)书上P40进行讲解
3.2.1IP地址的结构
在现行版本的IP协议(IPv4),IP地址是由4个十进制数字组成的32位数字:
5类IP地址:
A0.0.0.0~127.255.255.255
B128.0.0.0~191.255.255.255
C192.0.0.0~223.255.255.255
D224.0.0.0~239.255.255.255
E240.0.0.0~247.255.255.255
讲解书上P40图3-1各类地址的结构:
A类地址的私有网络可以把IP地址分配给大量主机
C类地址支持的主机较少,但可用的网络号更多。
D类和E类没有被分配网络号,D类用于组播,E类是被保留
3.2.2获取IP地址
由ICANN(InternetCorporationforAssignedNamesandNumbers)——Internet名称和编号分配协会,负责分配IP地址块。
获取IP地址常常由接入网络的方式来确定的,最常见的方式是由网络管理员,ISP和其他网络服务指定。
举例:
拨号由ISP确定,LAN管理员分配。
3.2.3特殊IP地址
环回地址(loopbackaddress)127.0.0.1,用环回地址访问本地机器。
思考题:
为什么要用127.0.0.1,不用现在本机正在使用的IP地址访问自己?
被保留用于私有网络的地址,用于内部网的A,B,C类地址范围:
A类10.0.0.0~10.255.255.255
B类172.16.0.0~172.31.255.255
C类192.168.0.0~192.168.255.255
3.3域名系统(DNS)
3.3.1域名是什么?
通过把文本形式的名字与IP地址联系起来,从而使得Internet变成用户界面友好的。
讨论:
为什么要引入域名系统?
名字比数字好记,例如-->192.18.97.241
3.3.2域名的工作方式
用数据库的管理方式,分散到各个不同的主机上。
国际注册机构负责coutry-code顶级域,形成分层结构。
如P43图3-2
简单介绍,不是本课程的重点,在网络课程当中已学习过,由同学课下自己复习。
3.3.3域名的解析
域名解析的工作原理:
用书上P43,图3-3很好解释。
操作系统找到本地dns→找到根域名服务器→找到.com服务器,返回IP地址.
简单介绍,不是本课程的重点,在网络课程当中已学习过,由同学课下自己复习。
3.4用Java进行Internet寻址
3.4.1.InetAddress类
设问:
网络编程当中经常要获取本机或其它机器的IP地址,如何用Java获得一个域名的IP地址呢?
提供这个功能的类叫做.InetAddress。
我们假设现在有这样一个域名,它用一个静态的getByName来重新获得一个InetAddress,然后得到可以读出的IP地址。
介绍.InetAddress最基本的两个方法:
2getHostName()获取主机文本名
3getHostAddress()获取点分十进制格式IP地址
下面的代码是非常基本的命令行:
(说明这个类,以及方法如何使用)
import.InetAddress;
import.UnknownHostException;
publicclassNsLookup{
staticpublicvoidmain(String[]args){
try{
InetAddressaddress=InetAddress.getByName(args[0]);
System.out.println(args[0]+":
"+
address.getHostAddress());
}
catch(UnknownHostExceptionuhe){
System.err.println("Unabletofind:
"+args[0]);
}
}
}
InetAddress也可以通过使用getAddress()来获得IP地址,但是它的返回值是一个4个字节的数组。
因此尽管getAddress()在获得IP方面是有用的,但却不适于用来输出。
3.4.2一个域名多个地址的情况
讨论:
有时一个域名会包含不止一个IP地址?
比如微软的Web服务器,这是为了保持负载平衡。
InetAddress提供了一种可以得到一个域名的所有IP地址的方法。
这种情况我想获得每个IP那么该怎么办?
import.InetAddress;
import.UnknownHostException;
publicclassNsLookup{
staticpublicvoidmain(String[]args){
try{
Stringname=args[0];
InetAddress[]addresses=InetAddress.getAllByName(name);
for(inti=0;i System.out.println(name+"["+i+"]: "+ addresses[i].getHostAddress());} }catch(UnknownHostExceptionuhe){ System.err.println("Unabletofind: "+args[0]); } } } 试着考虑它的输出结果: 对于,将会输出: bash$javacode.NsLookup [0]: 192.18.97.241 然而,对于,将会输出: bash$javadcode/NsLookup.java [0]: 207.46.230.218 [1]: 207.46.197.101 [2]: 207.46.230.229 [3]: 207.46.197.113 [4]: 207.46.230.219 [5]: 207.46.230.220 3.4.3用.InetAddress类获取本机地址 考虑如何获得本机的地址? 由于在InetAddress类中,localhost必须要特别处理。 如果字符串“localhost”直接进入NsLookup程序的原始版本,就会得到以下相当无用的结果: 127.0.0.1 那么,我们应该手动寻找本地地址: try{ InetAddresslocalhost=InetAddress.getLocalHost(); System.out.println ("localhost: "+localhost.getHostAddress()); System.out.println ("localhost: "+localhost.getHostName()); }catch(UnknownHostExceptionuhe){ System.err.println ("Localhostnotseeable.Somethingisodd."); } 那么我们能得到这样一个输出的例子: localhost: 192.168.13.15 localhost: crab 3.4.4.InetAddress类的意义 那么InetAddress究竟有什么用? 引入InetAddress类的意义: InetAddress可能会被用来将IP地址转变为这些地址的域名,这对于分析Web日志是很有用的。 InetAddress使得开发者们可以轻松的和域名、IP地址打交道,并且使他们可以不必和DNS服务器进行交互。 3.4.5Java中其他的地址类型 Java不只这一类地址类型,还有丰富的联网地址的方式。 例如URL,RMI,我们有专门的章节来讲述。 本章复习总结: 域名系统(DNS) IP地址的结构和种类(A,B,C,D,E) InetAddress类及其方法,例如getHostName(),getHostAddress()等等 作业安排: 1.编写一段程序使其能够根据域名显示其IP地址。 2.编写一段程序使其能够显示本机的IP地址。 第四章数据流 教学目的和要求: 1要求学生理解流的概念和意义 2要求学生掌握JavaI/O基础类,提高学生的逻辑思维能力。 3要求学生掌握过滤流类,字符流。 4要求学生掌握读取器和写入器。 重点: 1流的概念和意义 2JavaI/O基础类,流的工作方式 3过滤流类,读取器和写入器 难点: 流的概念和它的意义的深刻理解. 读取器和写入器 教学方法: 多媒体教学+试验课 学时分配: 10个学时(讲课6+试验4) 作业安排: 1.JAVA网络当中的数据流是如何定义的? 2.编写一个程序,实现将键盘上输入的一串字符写到文本文件中。 4.1流概述 在java中,以流来表示网络上文件之间,甚至应用程序之间的通信。 学习了用java在internet中寻址后,我们进入到数据流的学习。 4.1.1流的操作流程: Reading: openastream whilemoreinformation readi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 教案