JAVA网络编程各章理论复习知识要点

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Java网络编程各章理论复习知识要点
1、InputStream类的mark()方法在使用前应该判断文件系统是否支持该方法。

2、当Java程序需要从外部设备等读取数据时,需要创建一个相应类型的输入流对象来完成与该外部设备的连接。

由于InputStream类是抽象类,所以程序中创建的输入流对象一般是InputStream类的某个子类的对象,通过该对象调用相应的read()方法实现数据的输入操作。

3、对于缓冲流式输出,write()方法所输出的数据不是直接输出到与输出流相连的外部设备上,而是先暂时存放在流的缓冲区中,等到缓冲区数据存储到一定数量时,再执行向外部设备的写操作一次输出到外部设备。

4、对于缓冲流式输出,可以调用flush()方法在缓冲区不满时强制清空缓冲区中的数据。

5、当Java程序需要向外部设备等输出数据时,需要创建一个相应类型的输出流对象来完成与该外部设备的连接。

由于OutputStream类是抽象类,所以程序中创建的输出流对象一般是OutputStream类的某个子类的对象,通过该对象调用相应的write()方法实现数据向外部设备的输出操作。

6、文件处理是最常见的I/O处理。

7、File类提供了一种与机器无关的方式来描述一个文件对象的属性
8、每个File类对象表示一个磁盘文件或目录,其对象属性中包含了文件或目录的相关信息,如文件名、长度等,调用它的方法,可以完成对文件或者目录的管理操作,如创建、删除、改名等。

9、File类构造函数中path参数可以是绝对路径也可以是相对路径。

10、FileInputStream类继承自InputStream类,主要用来处理二进制类型文件的读取工作。

11、FileOutputStream类继承自OutputStream类,主要用来处理二进制类型文件的写入工作。

12、Reader类和Writer类可用来处理字符类型文件的顺序读取和写入工作。

13、Reader类和Writer类提供了一些用于字符流处理的接口,不能用来创建对象,主要用来派生字符流子类。

14、Reader类和Writer类的方法通常不能直接使用,而是通过其派生类使用。

15、FileReader类是一个以字符方式读取文件内容的Reader类的子类。

16、FileWriter类是一个以字符方式将数据写入文件的Writer类的子类。

17、FileWriter对象的创建不依赖于文件是否存在,如果文件不存在,则先创建文件,然后打开等待输出。

18、使用BufferedReader类来读取缓冲区中的数据之前,必须先创建FileReader类对象,然后再以该对象为参数创建BufferedReader类对象,然后才可利用该对象读取缓冲区中的数据。

19、线程是程序内部的顺序控制流,是程序中的一条执行路径。

20、线程是一种在CPU上调度的程序状态,它在某一瞬间只是执行过程的一个状态。

21、一个进程中的所有线程共享该进程的状态,他们存储在相同的内存空间中,共享程序代码和数据。

22、线程与进程的关系:
管理者:线程由程序负责管理,而进程由操作系统调度。

依附关系:线程依附于进程的上下文环境中,随进程或父线程执行后启动。

地址空间分配:多个线程使用相同的地址空间,因此线程之间的通信非常方便;而进程之间使用不同的地址空间,可以单独执行。

23、一个线程从创建、启动到消亡的过程称为线程的生命周期。

24、线程的状态:创建状态、就绪状态、运行状态、阻塞状态、消亡。

25、线程在下列情况下,进入阻塞状态:
1、等待I/O操作完成
2、线程调用wait()方法等待一个条件变量
3、调用了该线程的sleep()方法
4、调用了suspend()方法
26、线程的创建分两步:定义线程体和创建线程对象。

27创建线程的方法:通过继承Thread类和实现Runnable接口
28、Thread类在ng包中,不需要在程序中显式导入。

29、若要在类中激活线程,必须做好两件事:首先,此类必须继承Thread类,使自己成为Thread类的子类。

另外,线程要实现的功能代码必须编写在run()方法内。

30、通过Thread类的子类实现多线程的一般步骤:
1、创建Thread类的子类SubThread,并重写run()方法。

一般格式为:
public class SubThread extends Thread{
public SubThread(){
//定义子类的构造方法,可传递参数。

可省略。

}
public void run(){
//编写具体代码,重写该方法
}
}
2、在主类的main()方法中创建子类SubThread对象,一般格式为:
SubThread thread1=new SubThread();(对象类型可以是Thread)
3、启动线程。

一般格式为:Thread1.start();
31、通过实现Runnable接口创建线程时,用户需创建一个实现Runnable接口的类,并在该类中定义run()方法来实现线程的具体功能,然后用带有Runnable参数的Thread类构造方
法创建线程。

32、通过实现Runnable接口创建线程的一般步骤:
1、定义实现Runnable接口的类Thread_Runnable,一般格式为:
class Thread_Runnable implements Runnable{
public void run(){//具体代码}
}
2、创建Thread_Runnable类对象。

一般格式:
Thread_Runnable obj1=new Thread_Runnable(“线程1”);
3、用带有Runnable参数的Thread类构造方法创建线程对象,对象obj1作为构造方法的参数,作为新建线程的目标对象为线程提供run()方法。

Thread thread1=new Threade(obj1);
4、启动线程
thread1.start();
33、SQL语言的子类型有:数据定义、数据处理、数据控制
34、JDBC是一种用于执行SQL语句的Java API
35、JDBC可做三件事:
与数据库建立连接,发送SQL语句,处理结果。

36、JDBC是个“低级”接口,它用于直接调用SQL命令。

同时也被设计为一种基础接口,在它之上可以建立高级接口和工具。

37、JDBC驱动程序的类型:
比较常见的JDBC驱动程序可分为以下四个种类:
JDBC-ODBC桥驱动程序;本地API-部分用Java来编写的驱动程序;JDBC网络纯Java驱动程序;
本地协议纯Java驱动程序
38、Java ServerPages是由Sun Microsystems公司倡导的一种动态网页技术标准
39、在传统的HTML文件中加入Java程序片断,就构成了JSP网页。

40、JSP中的元素:指令元素;脚本元素;动作元素;注释元素;模板元素等
41、JSP注释元素有html注释、隐藏注释和java注释等三种。

42、模板元素是指JSP的静态HTML或者XML内容。

43、指令元素用于设置全局变量,声明类,要实现的方法等等。

44、page指令可以出现多次,但是每一种属性只能出现一次,重复的属性设置将覆盖先前的设置。

45、page指令的import属性可以多次出现,不会覆盖先前设置。

46、page指令可以放在JSP文件的任意地方,作用范围都是整个JSP页面。

为了可读性,一般放在JSP文件顶部。

47、脚本元素分为:声明、表达式和代码段。

分别用<%!declaration%>、<%= expression%>和
<%……%>定义。

48、<%!、<%=和<%之间的区别:变量声明后面必须带分号;表达式可以包含任何语言表达式,并不以分号结束;代码段中,如果语言要求语句以分号结束,则必须提供分号49、JSP标准动作:
<jsp:useBean><jsp:setProperty><jsp:getProperty><jsp:forward><jsp:include> <jsp:param><jsp:plugin>等
50、Java提供的网络功能有三大类:URL,Socke,Datagram。

51、Java中有关网络方面的功能都定义在包中。

52、InetAddress类的对象封装了主机名称和IP地址。

53、InetAddress类的对象不能直接创建,因为InetAddress类没有公共的构造函数。

54、InetAddress类的对象必须由其方法的返回值获得。

55、InetAddress类的对象可以由getByNmae()、getByAllNmae()及getLocalHost()的获得。

56、方法getLocalHost()获得本地机的InetAddress对象,当查找不到本地机器的地址时,触发一个UnknownHostException异常。

57、使用InetAddress类的getHostName()和getHostAddress()可以获得字符串表示的主机名或IP地址。

58、使用InetAddress类可以将IP地址转换为该地址的域名。

59、URL包含两部分内容:协议名和资源名。

60、URL(Uniform Resource Locator)是统一资源定位器的简写。

61、Java程序定位和检索网络上的数据最简单的方法是使用URL类。

62、.URL类是对统一资源定位符的抽象。

63、openStream()方法连接URL参考的资源,实现客户机和服务器之间所有必要的握手连接,并且从可读数据返回InputStream。

64、利用URL类openStream()方法只能读取网络数据,不能上传数据。

65、利用URL类的openStream()方法只能以字节流的方式读取网络资源数据。

66、URLConnection类是以HTTP协议为中心的类,用来建立java程序与指定的URL的网络通信连接。

67、当与一个URL建立连接时,首先创建一个URL对象,然后调用URL对象的OpenConnection()方法生成对应的URLConnection对象。

68、URLConnection类不能直接通过new操作符来创建对象。

69、URLConnection类建立的连接可以进行双向数据传输。

70、利用URLConnection类对象向URL对象发送服务请求进行通信时,具体的实现步骤如下:
1、创建URL对象
2、调用URL对象的OpenConnection()方法打开一个到URL的连接,返回相应的URLConnection类对象。

3、从URLConnection对象获取其连接的输出流,该输出流就是连接到服务器上CGI的标准输入流,通过这个输出流向服务器发送数据。

4、向这个输出流写入数据,写入结束后关闭输出流。

5、从URLConnection对象获取其连接的输入流,该输入流就是连接到服务器上CGI的标准输出流,通过这个输出流读取服务器发送的数据,最后关闭输入流。

71、TCP是Tranfer Control Protocol的简称,是一种面向连接的保证可靠传输的协议。

72、UDP是User Datagram Protocol的简称,是一种无连接的不可靠传输的协议。

73、使用UDP传输数据时是有大小限制的,每个被传输的数据报必须限定在64KB之内。

74、TCP/IP协议的基本传输单位是数据报(Datagram)。

TCP协议负责把数据分成若干个数据报,并给每个数据报加上包头。

IP协议在每个包头上再加上接收主机地址。

75、TCP/IP协议数据的传输基于TCP/IP模型的4层结构:应用层、传输层、网络层和网络接口层。

76、UDP主要用于不需要TCP排序和流量控制能力而是自己完成这些功能的应用程序。

77、客户机/服务器模式的建立基于以下两点:
首先,建立网络的起因是网络中软、硬件资源、运算能力和信息不均等,需要共享,从而造就拥有众多资源的主机提供服务,资源较少的客户请求服务这一非对等作用。

其次,网间进程通信完全是异步的,相互通信的进程间既不存在父子关系,又不共享内存缓冲区,因此需要一种机制为希望通信的进程间建立一种联系,为二者的数据交换提供同步,这就是基于客户机/服务器模式的TCP/IP。

78、利用Socket编程的一般步骤如下:
1、分别是为服务器和客户端创建Socket对象,建立Socket连接
2、打开连接到Socket的输入输出流。

Socket对象包含两个流:一是输入流,表示流入的数据流,其作用是接收数据;一是输出流,表示流出的数据流,其作用是向外发送数据,其流操作与I/O操作相同。

3、按照一定的协议对Socket进行读写操作。

4、读写操作结束后,关闭Socket。

79、Socket编程的基本步骤:
服务器端程序的编写步骤:
1、创建一个等待连接的ServerSocket对象,如sersocket。

2、调用sesocket对象的accept()方法监听接收客户端的连接请求;当监听到一个客户的连接请求时,连接成功,并返回一个用于通信的Socket对象。

3、创建与Socket对象绑定的输入输出流,并建立相应的数据输入输出流。

4、通过数据输入输出流与客户端进行数据读写,完成双向通信。

5、当客户断开连接时,关闭各个流对象,结束通信。

客户端应用程序的编写步骤:
1、创建指定服务器上指定端口号的Socket对象。

2、创建与Socket对象绑定的输入输出流,并建立相应的数据输入输出流。

3、通过数据输入输出流与服务器端进行数据读写,完成双向通信。

4、通过调用close()方法关闭与服务器的连接,并关闭各个流对象,结束通信。

80、ServerSocket类的主要任务是在服务器端耐心等候客户端的连接请求,一旦客户端应用程序申请建立一个Socket连接,ServerSocket类就会通过accept()方法返回一个对应的服务器端Socket对象,以便进行直接通信。

81、Socket(InetAddress address,int port)产生java.io.IOException异常,不抛出UnknownHostException异常。

82、ServerSocket(int port)把服务器套接字绑定到特定的端口,默认请求连接队列最大长度为50。

83、ServerSocket(int port)port为0,指在任何空闲端口上创建Socket。

84、Socket类是java用来实现客户端TCP操作的基础类。

Socket类的输入输出都是通过流实现的。

85、创建TCP客户关键代码:
try{//把套接字连接到某台主机和端口
Socket socket=new Socket(somehost,someport);
//连接到被缓冲地读取程序
BufferedReader reader=new BufferedReader(new InputStreamReader
(socket.getInputStream()));
//连接到输出流
PrintWriter out=new PrintWriter(socket.getOutputStream(),true);
}catch(Exception e){
System.err.println("Error-"+e);
}
86、TCP服务器程序关键代码:
ServerSocket ss=new ServerSocket(8629);
while(true){
Socket socket=ss.accept();
BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStr
eam()));
PrintWriter out=new PrintWriter(socket.getOutputStream(),true);
87、下列代码:
BufferedReader in=new BufferedReader(new
InputStreamReader(client.getInputStream()));
PrintWriter out=new PrintWriter(client.getOutputStream());
可用下列代码替代:
DataInputStream isFromClient=new DataInputStream(client.getInputStream()); DataOutputStream osToClient=new DataOutputStream(client.getOutputStream());
88、DatagramSocket表示用于接收和发送UDP的Socket实例,即在程序之间建立传送数据报的通信连接。

89、构造函数DatagramSocket()通常用于客户端编程,它并没有特定监听的端口,仅仅使用一个临时的。

程序会让操作系统分配一个可用的端口。

90、构造函数DatagramSocket(int port)创建实例,并固定监听Port端口的报文。

通常用于服务端。

用数据报方式编写client/server程序时,无论在客户方还是服务方,首先都要建立一个DatagramSocket对象,用来接收或发送数据报,然后使用DatagramPacket类对象作为传输数据的载体。

91、构造函数DatagramPacket(byte[]buf,int length)将数据包中Length长的数据装进Buf数组,一般用来接收数据。

92、构造函数DatagramPacket(byte[]buf,int length,InetAddress clientAddress,int clientPort)
从Buf数组中,取出Length长的数据创建数据包对象,目标是clientAddress地址,clientPort端口,通常用来发送数据给客户端。

93、基于UDP协议的Socket编程的具体开发步骤:
服务器端程序的具体开发步骤:
1、建立一个DatagramSocket对象。

2、进入收发数据报包的循环,直到客户端数据传送完毕。

循环过程如下:
(1)创建一个用于接收数据的DatagramPacket对象。

(2)利用DatagramSocket对象的receive()方法等待客户端的数据报包。

(3)处理客户端数据报包内容。

(4)创建一个用于发送响应信息数据的DatagramPacket对象。

(5)利用DatagramSocket对象的方法send()向客户端发送包含响应信息的数据报包。

3、客户端数据传送完毕,释放Socket。

客户端程序的具体开发步骤:
1、建立一个DatagramSocket对象。

2、进入收发数据报包的循环,直到数据传送完毕。

循环过程如下:
(1)创建一个用于接收数据的DatagramPacket对象,并将要发送的数据封装到该数据报包。

(2)利用DatagramSocket对象的send()方法向服务器端的发送数据报包。

(3)创建一个用于接收响应信息数据的DatagramPacket对象。

(4)利用DatagramSocket对象的receive()方法等待接收服务器端包含响应信息的数据报包。

(5)处理服务器端数据报包内容。

3、数据传送完毕,释放Socket。

94、JavaMail API是一种可选的、能用于读取、编写和发送电子消息的包。

95、简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)是最早出现、被普遍使用的最基本的Internet邮件的协议。

96、SMTP是一种提供可靠且有效电子邮件传输的协议。

97、SMTP使用一组简单的、基于文本的命令与SMTP服务器通信。

98、邮局协议(Post Office Protocol version3,POP3)协议用于从邮件服务器检索以得到新的邮件。

99、目前电子邮件基本上都是通过POP3协议接收的。

100、因特网消息访问协议(internet messager access protocol,IMAP)协议比POP3功能更加强大,它可在接收邮件时,把邮件保存在邮件服务器中,既可在服务器中保留邮件也可把邮件下载下来。

101、JavaMail体系分为3层:抽象层、Internet邮件实现层和协议实现层。

JavaMail API 包括抽象层和Internet邮件实现层。

102、JavaMail API的核心类:会话、消息、地址、验证程序、传输,存储和文件夹。

所有这些类都可以在JavaMail API即javax.mail的顶层包(javax.mail)中找到
103、Session类是JavaMail API最高层入口类,它定义了一个基本的邮件会话。

104、Session类是邮件系统的访问入口。

105、Session类的构造器是私有的,不能被继承,也不能用new语句来创建实例。

相关文档
最新文档