Java网络编程原理与JSP-Web开发核心技术-教学ppt课件--04第四章-JAVA网路编程.ppt
《Java网络编程原理与JSP-Web开发核心技术-教学ppt课件--04第四章-JAVA网路编程.ppt》由会员分享,可在线阅读,更多相关《Java网络编程原理与JSP-Web开发核心技术-教学ppt课件--04第四章-JAVA网路编程.ppt(69页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、在线教务辅导网:在线教务辅导网:http:/教材其余课件及动画素材请查阅在线教务辅导网教材其余课件及动画素材请查阅在线教务辅导网QQ:349134187 或者直接输入下面地址:或者直接输入下面地址:http:/12/17/20232作者:肖明作者:肖明学校:烟台大学计算机学院学校:烟台大学计算机学院日期:日期:20102010年年2 2月月第四章第四章 JAVAJAVA网路编程网路编程第四章第四章 JAVA网络编程网络编程4.1 数据流数据流4.2 基于基于TCP协议的套接字通信协议的套接字通信4.1 数据流数据流4.4 组播套接字组播套接字4.5 小结小结习题四习题四3第四章第四章 JAVA
2、网络编程网络编程Java的基于的基于TCP/IP协议的客户端与服务协议的客户端与服务器模式下的网络编程原理,涉及到的类器模式下的网络编程原理,涉及到的类主要有两个包:主要有两个包:输入输出包:输入输出包:java.io网络包:网络包:。44.1 数据流数据流当前网络通信,都是由数据流(当前网络通信,都是由数据流(data stream)来处理的,因此,)来处理的,因此,基于流通信(基于流通信(stream-based communication)是)是Java网络编网络编程的基础。程的基础。数据流:数据流:是发送和接收信息的管道或通道,当数据通信管道是发送和接收信息的管道或通道,当数据通信管道
3、建立起来,数据就可以从管道的一端传输到另一端。建立起来,数据就可以从管道的一端传输到另一端。通信:通信:是指在管道中流动的数据过程,这种数据流通信是以是指在管道中流动的数据过程,这种数据流通信是以字节为基本数据单位字节为基本数据单位,通过串行形式的数据序列顺序进行传输的,通过串行形式的数据序列顺序进行传输的过程。过程。4.1.1 数据流与网络技术的联系数据流与网络技术的联系4.1.2 流的工作方式流的工作方式4.1.3 过滤器流、读取器和写入器过滤器流、读取器和写入器4.1.4 对象持久性和对象序列化对象持久性和对象序列化54.1.1 数据流与网络技术的联系数据流与网络技术的联系网络技术使得物
4、理网络连通,在有效的网络技术使得物理网络连通,在有效的协议控制下,实现信息传输,即套接字协议控制下,实现信息传输,即套接字Socket的连接和通信。的连接和通信。网络编程:网络编程:是基于这种连通和相关协议控制下的套是基于这种连通和相关协议控制下的套接字接字Socket实现网络的底层连接,再以流(实现网络的底层连接,再以流(stream)为类的操作,进行数据传输和流的关闭等。为类的操作,进行数据传输和流的关闭等。从另一个角度看,流为网络通信提供了从另一个角度看,流为网络通信提供了统一的接口,使得网络通信更加规范和统一的接口,使得网络通信更加规范和一致。一致。64.1.1 数据流与网络技术的联系
5、数据流与网络技术的联系在在Java中,是以流(也就是类)来表示网络上中,是以流(也就是类)来表示网络上的数据、文件或应用程序之间的通信。流划分的数据、文件或应用程序之间的通信。流划分为两种:为两种:n输入流(输入流(input stream):将数据从某个数据源发):将数据从某个数据源发送到程序中;送到程序中;n输出流(输出流(output stream):将数据从程序中往外):将数据从程序中往外发送到某个目地端。发送到某个目地端。输入、输出流的划分,极大地方便了编程。可输入、输出流的划分,极大地方便了编程。可以灵活地,分别独立地从输入流中读数据,接以灵活地,分别独立地从输入流中读数据,接受数
6、据,向输出流中写数据,发送数据,实现受数据,向输出流中写数据,发送数据,实现单向(单向(one-way)或双向()或双向(two-way)通讯等。)通讯等。74.1.2 流的工作方式流的工作方式在在Java中,流是以字节级进行数据通信,中,流是以字节级进行数据通信,为此分别提供了:为此分别提供了:字节输入流公用超类字节输入流公用超类java.io.InputStream字节输出流公用超类字节输出流公用超类java.io.OutputStreamn都是抽象类,也是基础性的底层字节输入输出类都是抽象类,也是基础性的底层字节输入输出类(流)。(流)。n定义了公共的公有方法,通过两级子类继承,来实定义
7、了公共的公有方法,通过两级子类继承,来实现这些方法和子类自己的方法。现这些方法和子类自己的方法。8两级子类继承两级子类继承字节输入、输出流公用超类继承关系字节输入、输出流公用超类继承关系 一级子类一级子类FilterInputStreamInputStreamFilterOutputStreamOutputStreamDataInputStreamDataOutputStreamBufferedInputStreamBufferedOutputStreamDataInputDataOutputObject字节输出流字节输出流接口接口ObjectInputStream图图4.1 字节输入、输出流
8、公用超类继承关系字节输入、输出流公用超类继承关系字节输入流字节输入流过滤输入流过滤输入流过滤输出流过滤输出流公用超类公用超类二级子类二级子类数据输入流数据输入流数据输出流数据输出流缓冲输入流缓冲输入流缓冲输出流缓冲输出流ObjectOutputStream9第一级继承第一级继承有有4或或6个子类不等,个子类不等,其中数据源包括:其中数据源包括:n字节数组字节数组(ByteArray)n字符串字符串(String)n文件文件(File)n管道管道(Pipe)n过滤器过滤器(Filter)n其他等数据源其他等数据源与网络通信有关的与网络通信有关的InputStream和和OutputStream的
9、子的子类是:类是:n过滤器输入流过滤器输入流FilterInputStreamn过滤器输出流过滤器输出流FilterOutputStreamn这两个类也是抽象类这两个类也是抽象类 10第二级继承第二级继承在过滤器流的基础上继承,有在过滤器流的基础上继承,有10或或8个子个子类,基本上都与网络通信有关,其中常类,基本上都与网络通信有关,其中常用的是:用的是:n过滤器输入流过滤器输入流FilterInputStream的的子类:子类:l数据输入流数据输入流DataInputStreaml缓冲输入流缓冲输入流BufferedInputStreaml数据输入流接口数据输入流接口DataInput;n过
10、滤器输出流过滤器输出流FilterOutputStream的的子类:子类:l数据输出流数据输出流DataOutputStreaml缓冲输出流缓冲输出流BufferedOutputStreaml数据输出流接口数据输出流接口Data Output;11与网络通信有关的流工作方式与网络通信有关的流工作方式指创建过滤器输入流子类或过滤器输出流子类指创建过滤器输入流子类或过滤器输出流子类与套接字通信绑定的对象方式。与套接字通信绑定的对象方式。有了这些流对象就可以调用其方法完成底层字有了这些流对象就可以调用其方法完成底层字节流的套接字网络数据通信。节流的套接字网络数据通信。在具体设计上是两个程序,分别装在
11、网络上的在具体设计上是两个程序,分别装在网络上的两台计算机上。两台计算机上。在互联网上,有三种模式:在互联网上,有三种模式:n点对点的点对点的P2P(peer-to-peer)模式,又称对等互)模式,又称对等互联网络技术,联网络技术,n客户端和服务器(客户端和服务器(C/S)体系结构)体系结构n浏览器和服务器(浏览器和服务器(B/S)体系结构)体系结构124.1.3 过滤器流、读取器和写入器过滤器流、读取器和写入器过滤器流过滤器流n具有缓冲区的过滤器流具有缓冲区的过滤器流lBufferedInputStream和和BufferedOutputStream流流l对数据访问时可提高效率。对数据访问
12、时可提高效率。n访问不同数据类型的过滤器流访问不同数据类型的过滤器流lDataInputStream和和DataOutputStream流流l提供了访问各种不同数据类型的方法提供了访问各种不同数据类型的方法n过滤器流的特点过滤器流的特点l在进行读写数据的同时,还可进行数据处理,方在进行读写数据的同时,还可进行数据处理,方便了网络编程。便了网络编程。13读取器读取器Reader和写入器和写入器Writer它们均为它们均为IO包中的类,都是抽象的公用包中的类,都是抽象的公用超类。超类。它们也是通过其子类继承实现读入和写它们也是通过其子类继承实现读入和写出。不同点是读写器以出。不同点是读写器以字符流
13、操作字符流操作应用程序以字符形式输入和输出速度更应用程序以字符形式输入和输出速度更快、功能更强,但需要将字符转换成字快、功能更强,但需要将字符转换成字节来实现网络通信。节来实现网络通信。141过滤器流过滤器流指过滤器输入流指过滤器输入流FilterInputStream和过和过滤器输出流滤器输出流FilterOutputStream,这两,这两个抽象类,以及所对应的子类。个抽象类,以及所对应的子类。过滤器输入流过滤器输入流FilterInputStream,通过,通过其子类继承实现输入流操作,共有其子类继承实现输入流操作,共有10个个子类:子类:15过滤器输入流过滤器输入流FilterInpu
14、tStream的子类的子类 数据输入流数据输入流DataInputStreamn定义:定义:public class DataInputStream extends FilterInputStream implements DataInputn构造函数:构造函数:DataInputStream(InputStream in)n方法如下:方法如下:lint read(byte b)lboolean readBoolean()ldouble readDouble()lfloat readFloat()lbyte readByte()lshort readShort()lint readInt()l
15、long readLong()lString readUTF()16过滤器输入流过滤器输入流FilterInputStream的子类的子类 数据数据输出流输出流DataOutputStreamn定义:定义:public class DataOutputStream extends FilterOutputStream implements DataOutputn构造函数:构造函数:public DataOutputStream(OutputStream out)n方法如下:方法如下:lpublic final int size()l以下方法修饰为以下方法修饰为public,返回值为,返回值为v
16、oid:lflush(),清空此数据输出流。,清空此数据输出流。lwrite(int b)lwrite(byte b,int off,int len)lwriteBoolean(Boolean v)lwriteByte(int v)lwriteBytes(String s)writeChar(int v)lpublic final void writeUTF(String str)lwriteDouble(double v)lwriteFloat(float v)lwriteInt(int v)lwriteLong(long v)lwriteShort(int v)17 缓冲输入流缓冲输入流B
17、ufferedInputStream定义:定义:npublic class BufferedInputStream extends FilterInputStream构造函数:构造函数:npublic BufferedInputStream(InputStream in)npublic BufferedInputStream(InputStream in,int size)n创建一个带有基本输入流创建一个带有基本输入流in为参数的缓冲输入流。此缓冲区是为参数的缓冲输入流。此缓冲区是内部缓冲区数组内部缓冲区数组buf。size为设定的缓冲区大小。为设定的缓冲区大小。方法如下:方法如下:nread
18、(),从输入流中读取一个数据字节。返回一个,从输入流中读取一个数据字节。返回一个0到到255范范围内的围内的int字节值。字节值。nread(byte b,int off,int len),从此字节输入流中给定起始位,从此字节输入流中给定起始位置置off,开始读取长度,开始读取长度len个字节数到指定的个字节数到指定的byte数组中。数组中。b为为目标缓冲区。目标缓冲区。off为开始存储字节处的偏移量。为开始存储字节处的偏移量。len要读取的最要读取的最大字节数。大字节数。18 缓冲输出流缓冲输出流BufferedOutputStream定义:定义:public class BufferedO
19、utputStream extends FilterOutputStream 构造函数:构造函数:npublic BufferedOutputStream(OutputStream out)npublic BufferedOutputStream(OutputStream out,int size)n创建一个缓冲输出流,以将数据写入指定的底层输出流。创建一个缓冲输出流,以将数据写入指定的底层输出流。Out为底层输出流;为底层输出流;size为设定的缓冲区大小。为设定的缓冲区大小。方法如下:方法如下:nwrite(int b),将指定的字节写入此缓冲的输出流。,将指定的字节写入此缓冲的输出流。n
20、write(byte b,int off,int len),将指定,将指定byte数组中从位置数组中从位置off开始的长度开始的长度len个字节写入此缓冲的输出流。个字节写入此缓冲的输出流。b为数据;为数据;off为为数据的起始偏移量;数据的起始偏移量;len为要写入的字节数。为要写入的字节数。nflush(),刷新此缓冲的输出流。这迫使所有缓冲的输出字节,刷新此缓冲的输出流。这迫使所有缓冲的输出字节被写出到底层输出流中。被写出到底层输出流中。192读取器和写入器读取器和写入器在网络通信中,是以字节为单位,就必须将字在网络通信中,是以字节为单位,就必须将字符流转换成字节流,才能实现读取器和写入
21、器符流转换成字节流,才能实现读取器和写入器的网络通信。的网络通信。重点讨论与实现网络编程有关的读写器子类和重点讨论与实现网络编程有关的读写器子类和转换器。转换器。读取器读取器Reader的子类(流),的子类(流),BufferedReader和和InputStreamReader,写入器写入器Writer的子类的子类BufferedWriter、OutputStreamWriter和和PrintWriter都与网络编程有关。都与网络编程有关。202读取器和写入器读取器和写入器 缓冲字符读取器缓冲字符读取器BufferedReadern定义:定义:public class BufferedRea
22、der extends Readern构造函数:构造函数:lpublic BufferedReader(Reader in)lpublic BufferedReader(Reader in,int sz)n方法如下:方法如下:readLine(),读取一个文本行;,读取一个文本行;read(),读取单个字符。,读取单个字符。字节流与字符流输入转换器字节流与字符流输入转换器InputStreamReadern定义:定义:public class InputStreamReader extends Readern构造函数:构造函数:lpublic InputStreamReader(InputSt
23、ream in)lpublic InputStreamReader(InputStream in,Charset cs)lpublic InputStreamReader(InputStream in,CharsetDecoder dec)lpublic InputStreamReader(InputStream in,String charsetName)n对应的方法在此不讨论,可参考相关资料。对应的方法在此不讨论,可参考相关资料。212读取器和写入器读取器和写入器 缓冲字符写入器缓冲字符写入器BufferedWritern定义:定义:public class BufferedWriter
24、extends Writern构造函数:构造函数:lpublic BufferedWriter(Writer out)lpublic BufferedWriter(Writer out,int sz)n方法如下:方法如下:lflush();write(char cbuf,int ff,int len);write(int c);lwrite(String s,int off,int len)字符流与字节流输出转换器字符流与字节流输出转换器OutputStreamWritern定义:定义:public class OutputStreamWriter extends Writern构造函数:构造
25、函数:lpublic OutputStreamWriter(OutputStream out)n对应的方法在此不讨论,可参考相关资料。对应的方法在此不讨论,可参考相关资料。222读取器和写入器读取器和写入器 字符格式化文本输出流字符格式化文本输出流PrintWritern字符格式化文本输出流,它不包含用于写入原始字节的方法,字符格式化文本输出流,它不包含用于写入原始字节的方法,对于这些字节,程序应该使用未编码的字节流进行写入。对于这些字节,程序应该使用未编码的字节流进行写入。定义:定义:public class PrintWriter extends Writer构造函数:构造函数:n pub
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 网络 编程 原理 JSP Web 开发 核心技术 教学 ppt 课件 04 第四 网路
链接地址:https://www.taowenge.com/p-73430792.html
限制150内