




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第11章网络编程章网络编程11.1网络通信概念网络通信概念 u网络:用物理链路将各个孤立的工作站网络:用物理链路将各个孤立的工作站或主机相连在一起,或主机相连在一起,实现资源共享和通实现资源共享和通信信本章内容本章内容u网络通信概念网络通信概念uURLu基于基于TCP的的Socket编程编程u基于基于UDP的的Socket编程编程u基于基于SSL的的Socket编程编程 u网络通信的核心是协议。协议是指进程之网络通信的核心是协议。协议是指进程之间交换信息以完成任务所使用的一系列规间交换信息以完成任务所使用的一系列规则和规范。它主要包含两个方面的定义:则和规范。它主要包含两个方面的定义: 1)
2、定义了进程之间交换消息所必需遵循定义了进程之间交换消息所必需遵循的顺序的顺序 2)定义进程之间所交换的消息的格式定义进程之间所交换的消息的格式u网络协议是网络之间沟通、交流的桥梁,网络协议是网络之间沟通、交流的桥梁,只有相同网络协议的计算机才能进行信息只有相同网络协议的计算机才能进行信息的沟通与交流的沟通与交流u网络协议标准可分为两类:网络协议标准可分为两类:n事实标准:由厂家制定的,未经有关标准化组事实标准:由厂家制定的,未经有关标准化组织审定通过,但由于广泛使用形成了事实标准织审定通过,但由于广泛使用形成了事实标准n法定标准:经有关标准化组织审定通过的标准法定标准:经有关标准化组织审定通过
3、的标准。国际上的标准化组织有:。国际上的标准化组织有:(1)国际电信联盟(国际电信联盟(ITU,International Telecommunication Union)(2)国际标准化组织()国际标准化组织(ISO,International Standards Organization)(3)Internet体系结构委员会(体系结构委员会(IAB,Internet Architecture Board)uISO/ OSI RM:开放式系统互连参考模型:开放式系统互连参考模型,国际标准化组织给出的通用参考协议:,国际标准化组织给出的通用参考协议:n七层协议:物理层、数据链路层、网络层、传七
4、层协议:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层输层、会话层、表示层和应用层 n没有得到市场的认可没有得到市场的认可uTCP/IP: 传输控制协议传输控制协议/网间协议,是网间协议,是Internet的主要协议,的主要协议,在在60年代由麻省年代由麻省理工学院和一些商业组织为美国国防部开理工学院和一些商业组织为美国国防部开发的发的ARPANET基础上诞生的基础上诞生的n四层体系结构:应用层、传输层、网络层和网四层体系结构:应用层、传输层、网络层和网络接口层。在实际应用中,网络接口层包含数络接口层。在实际应用中,网络接口层包含数据链路层和物理层据链路层和物理层 n事实上的国际标
5、准网络协议事实上的国际标准网络协议u网络地址:网络地址:网络上的计算机通过网络地址网络上的计算机通过网络地址标识。两种表示方法:标识。两种表示方法:nIP地址:由地址:由点号分隔,点号分隔,4个整数,个整数,32位地址。每个位地址。每个32位位IP地址被分割成两地址被分割成两部分:前缀和后缀。地址前缀部分确定部分:前缀和后缀。地址前缀部分确定了计算机从属的物理网络;后缀部分确了计算机从属的物理网络;后缀部分确定了该网络上的一台计算机。例如:定了该网络上的一台计算机。例如: n域名:域名:将特定将特定 IP 地址映射至字符串地址映射至字符串。例如:例如: 11.2统一资源定
6、位器(统一资源定位器(URL)的使用)的使用表示同表示同一地址一地址u 用类用类InetAddress的实例对象来封装网络地的实例对象来封装网络地址,并获取其相关信息址,并获取其相关信息u 未提供构造方法。可用其成员方法获得对象未提供构造方法。可用其成员方法获得对象u 类类InetAddress的常用方法:的常用方法:ngetLocalHost()/获取本地计算机的网获取本地计算机的网络地址,包括络地址,包括本地机的域名和本地机的域名和IP地址。本地址。本地机的网络地址可表示为地机的网络地址可表示为“ ”或或“localhost”ngetByAddress(byte addr
7、)/获取获取addr指定的指定的IP地址对应的网络地址地址对应的网络地址ngetByName (String host)/获取获取host指定的主机名或指定的主机名或IP地址所对应的网络地址所对应的网络地址地址包中包中返回返回InetAddress对象对象,抛抛UnknowHostException【例例11-1】获取网络地址的使用(获取网络地址的使用(InetAddressUse.java)u其中:其中:n传输协议:指明获取资源所使用的网络传输协传输协议:指明获取资源所使用的网络传输协议,如议,如http、ftp、file等等n主机名:指定资源所在的计算机,可以是主机名:指定资源所在的计算机
8、,可以是IP地地址,如址,如,也可以是主机名或域名,如,也可以是主机名或域名,如n一个计算机中可能有多种服务(应用程序),一个计算机中可能有多种服务(应用程序),端口号用来区分不同的网络服务,如端口号用来区分不同的网络服务,如http服务服务的默认端口号是的默认端口号是80,ftp服务的默认端口号是服务的默认端口号是21等等http:/:8080/docs/index.html#j2sen端口号是一个整数,通常范围在端口号是一个整数,通常范围在065535之间(即之间(即16位二进制整数)位二进制整数)n小于小于1024的端口号一般分配给特定的服务协议,如:的端口号一般分配给
9、特定的服务协议,如:nHTTP(超文本传输协议)的默认端口是(超文本传输协议)的默认端口是80nFTP文件传送协议(文件传送协议(File Transfer Protocol,简称简称FTP)的端口号是)的端口号是21(控制端口),(控制端口),20(数(数据端口)据端口)nTELNET(远程登录)的默认端口是(远程登录)的默认端口是23nSMTP(Simple Mail Transfer Protocol,简,简单邮件传输协议)的默认端口是单邮件传输协议)的默认端口是25n如果没有注明端口号,如果没有注明端口号, URL将使用默认的端口号将使用默认的端口号 11.2统一资源定位器(统一资源定
10、位器(URL)的使用)的使用uURL(Uniform Resource Locator,URL):统一资源定位器(网络资源定位器):统一资源定位器(网络资源定位器),表示,表示Internet上某一资源的地址,上某一资源的地址, 只要只要按按URL规则定义某个资源,那么网络上的规则定义某个资源,那么网络上的其他程序就可以通过其他程序就可以通过URL来访问它来访问它uURL的值通常由的值通常由5部分组成,格式如下部分组成,格式如下: 例如:例如:http:/:8080/docs/index.html#j2se:/:/ n文件名:包括该文件的完整路径。在文件名:包括该文件的完整路径。在http协议
11、协议中,缺省的文件名是中,缺省的文件名是index.html,因此:因此:n引用:为资源文件内部的某个引用,用来定位引用:为资源文件内部的某个引用,用来定位显示文件内容的位置,如显示文件内容的位置,如http:/ 等同于等同于 http:/ spec) /参数指定协议、主机名、端口参数指定协议、主机名、端口号、文件名号、文件名nURL(String protocol ,String host, String file) /参数参数指定协议名、主机名、文件名指定协议名、主机名、文件名nURL(String protocol ,String host, Sting port,String file
12、)/参数指定协议名、主机名、端口号、文件名参数指定协议名、主机名、端口号、文件名 u例如:例如:tryURL u = new URL(http:/); catch( MalformedURLException e)u常用方法:常用方法:ngetProtocol() ngetHost() ngetPort()ngetFile()nnopenStream()/与与取出取出URL的指的指定成分信息定成分信息【例例11-2】URL的使用的使用(URLUse.java)u读取网络资源数据的步骤如下:读取网络资源数据的步骤如下:(1)创建类)创建类URL的实例对象,使其指向给定的实例对象,使其指向给定的网
13、络资源的网络资源(2)通过类)通过类URL的成员方法的成员方法openStream()建立建立起起URL连接,并返回输入流对象的引用,以连接,并返回输入流对象的引用,以便读取数据便读取数据(3)通过)通过java.io.BufferedInputStream或或java.io.BufferedReader封装输入流封装输入流(4)读取数据,并进行数据处理)读取数据,并进行数据处理(5)关闭数据流)关闭数据流u其中,步骤(其中,步骤(3)是可选的。当网络不稳定)是可选的。当网络不稳定或速度很慢时,通过步骤(或速度很慢时,通过步骤(3)可以提高获)可以提高获取网络资源数据的速度取网络资源数据的速度
14、 【例例11-3】通过通过URL获取网络资源的使用获取网络资源的使用import java.io.BufferedReader;import java.io.InputStreamReader;import .URL;public class URLReadDataUsepublic URLReadDataUse()try URL url=new URL(http:/); BufferedReader br=new BufferedReader(new InputStreamReader(url.openStream( );String s; while (s=br.readLine( ) !
15、= null) /读取网络资源信息读取网络资源信息 System.out.println(s); /输出网络资源信息输出网络资源信息 br.close( ); catch (Exception e)System.err.println(e); e.printStackTrace( ); public static void main(String args)new URLReadDataUse();URL资源的读取资源的读取可能会引起堵塞,可能会引起堵塞,应在一个线程中应在一个线程中读取,以免堵塞读取,以免堵塞主线程主线程显示显示URL资源中的资源中的html文件文件uJavax.swing包
16、中的包中的JEditorPane容器容器可以解释执行可以解释执行html文件,也就是说,如果文件,也就是说,如果你把你把html文件读入到文件读入到JEditorPane,该,该html文件就会被解释执行,显示在文件就会被解释执行,显示在JEditorPane容器中,这样就可看到网页容器中,这样就可看到网页的运行效果的运行效果11.3Java网络编程网络编程11.3.1 Java网络编程概述网络编程概述 u 最主要的工作就是在发送端把信息通最主要的工作就是在发送端把信息通过规定好的协议分封装成包,在接收过规定好的协议分封装成包,在接收端按照规定好的协议把包进行解析,端按照规定好的协议把包进行解
17、析,从而提取出对应的信息从而提取出对应的信息u 通过使用套接字来实现进程间的通信通过使用套接字来实现进程间的通信:端到端端到端的连接与通信的连接与通信u 网络上的两个程序(进程)通过一个网络上的两个程序(进程)通过一个双向的通信连接实现数据的交换,双双向的通信连接实现数据的交换,双向链路的一端称为一个向链路的一端称为一个socket(套接套接字)字)u套接字:一种基于网络通讯的接口,套接字:一种基于网络通讯的接口, 建立建立服务器和客户端之间的连接服务器和客户端之间的连接u端口号与端口号与IP地址组合即为一个套接字:地址组合即为一个套接字: IP地址标识地址标识Internet上的计算机,端口
18、上的计算机,端口号标识正在计算机上运行的进程(程序)号标识正在计算机上运行的进程(程序)uJava Socket:Java应用程序和网络协应用程序和网络协议的接口,提供若干个类的定义,议的接口,提供若干个类的定义,提供网提供网络上两台计算机之间(程序之间)交互通络上两台计算机之间(程序之间)交互通信的可靠连接信的可靠连接 ,实现网络通信,实现网络通信 uTCP Socket:使用:使用TCP协议实现可协议实现可靠的网络通信靠的网络通信uUDP Socket:使用:使用UDP协议实现效协议实现效率较高的网络通信率较高的网络通信uSSL Socket:使用:使用SSL协议实现安协议实现安全的网络编
19、程全的网络编程u在在Java网络编程中,一个套接字由:网络编程中,一个套接字由:主机号、端口号和协议名三部分主要内主机号、端口号和协议名三部分主要内容组成容组成 uJava网络编程可在以下网络编程可在以下4个层次上进行:个层次上进行:nURL层次,最高级层次,利用层次,最高级层次,利用URL直接进行直接进行Internt上的资源访问和数据传输上的资源访问和数据传输nSocket层次,常用网络编程方式,通过在层次,常用网络编程方式,通过在Client/Server结构的应用程序之间建立结构的应用程序之间建立Socket套套接字连接,然后在连接之上进行数据通信。主动接字连接,然后在连接之上进行数据
20、通信。主动发起通信的一方被称为客户端;接收请求进行通发起通信的一方被称为客户端;接收请求进行通信的一方被称为服务器信的一方被称为服务器nDatagram数据流层次,最低级层次,使用数据流层次,最低级层次,使用“用户用户数据报协议(数据报协议(UDP)”nSSL是基于加密和安全的网络编程是基于加密和安全的网络编程 包中的包中的Socket类实现了客户端的通信功能类实现了客户端的通信功能、ServerSocket类实现了服务器端的通信功能类实现了服务器端的通信功能u通过套接字建立连接的步骤:通过套接字建立连接的步骤: n服务器建立进程,创建一个服务器建立进程,创建一个ServerSocket对象对
21、象,监听每个端口(客户端)是否要求进行通信,监听每个端口(客户端)是否要求进行通信n客户端创建一个客户端创建一个Socket对象,包括连接的主机对象,包括连接的主机号和端口号,指定使用的通信协议,通过发出号和端口号,指定使用的通信协议,通过发出通信请求,试图与服务器建立连接通信请求,试图与服务器建立连接 n服务器监听到客户端的请求,获得一个和客户服务器监听到客户端的请求,获得一个和客户端端Socket相连接的相连接的Socket对象,与客户端进行对象,与客户端进行通信通信 理解连接的建立理解连接的建立u如果要建立连接,一台机器必须如果要建立连接,一台机器必须运行一个进程运行一个进程来等待连接来
22、等待连接,而另一台机器必须试图到达第一,而另一台机器必须试图到达第一台机器。这和电话系统类似;一方必须发起呼台机器。这和电话系统类似;一方必须发起呼叫,而另一方在此时必须等待电话呼叫叫,而另一方在此时必须等待电话呼叫u发起电话呼叫时,必须知道所拨的电话号码。发起电话呼叫时,必须知道所拨的电话号码。如果要发起网络连接,你需要知道远程机器的如果要发起网络连接,你需要知道远程机器的地址或名字。此外,每个网络连接需要一个端地址或名字。此外,每个网络连接需要一个端口号,可以把它想象成电话的分机号码。一旦口号,可以把它想象成电话的分机号码。一旦和一台计算机建立连接,需要指明连接的目的和一台计算机建立连接,
23、需要指明连接的目的。所以,就如同可以使用一个特定的分机号码。所以,就如同可以使用一个特定的分机号码来和财务部门对话那样,可以使用一个特定的来和财务部门对话那样,可以使用一个特定的端口号来和会计程序通信端口号来和会计程序通信u一个一个socket包括两个流:一个输入流和包括两个流:一个输入流和一个输出流一个输出流u建立网络连接之后,使用与建立网络连接之后,使用与socket相关相关联的流和使用其他流是非常相似的联的流和使用其他流是非常相似的u建立客户端和服务器两端相互通信的过建立客户端和服务器两端相互通信的过程是一样的:程是一样的:n打开套接字;打开套接字;n打开到套接字的输入、输出流;打开到套
24、接字的输入、输出流;n根据服务器协议读写套接字;根据服务器协议读写套接字;n关闭套接字,通信结束前的清理工作关闭套接字,通信结束前的清理工作u 尽管尽管TCP/IP协议的名称中只有协议的名称中只有TCP这个协议名,但这个协议名,但是在是在TCP/IP的传输层同时存在的传输层同时存在TCP和和UDP两个协两个协议议u TCP是一种面向连接的保证可靠传输的协议。通过是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流协议传输,得到的是一个顺序的无差错的数据流。发送方和接收方的成对的两个。发送方和接收方的成对的两个socket之间必须建之间必须建立连接,以便在立连
25、接,以便在TCP协议的基础上进行通信,当一个协议的基础上进行通信,当一个socket(通常都是(通常都是server socket)等待建立连接)等待建立连接时,另一个时,另一个socket可以要求进行连接,一旦这两个可以要求进行连接,一旦这两个socket连接起来,它们就可以进行双向数据传输,连接起来,它们就可以进行双向数据传输,双方都可以进行发送或接收操作双方都可以进行发送或接收操作u UDP是是User Datagram Protocol的简称,是一的简称,是一种无连接的协议,每个数据报都是一个独立的信息,种无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,它在网络
26、上以任何可包括完整的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的的地的时间以及内容的正确性都是不能被保证的uTCP协议协议是在端点与端点之间建立是在端点与端点之间建立持续持续的连的连接而进行通信。建立连接后接而进行通信。建立连接后:n发送端发送端将发送的数据印记了将发送的数据印记了序列号序列号和和错误错误检测代码检测代码,并以,并以字节流字节流的方式发送出去的方式发送出去n接收端接收端则对数据进行则对数据进行错误检查错误检查并按序列顺并按序列顺序将数据整理好,数据在需要
27、时可以序将数据整理好,数据在需要时可以重新重新发送发送,因此整个字节流到达接收端时完好,因此整个字节流到达接收端时完好无缺无缺u这与两个人打电话的情形是相似的这与两个人打电话的情形是相似的11.3.2基于基于TCP的的Socket编程原理编程原理图图11-211-2基于基于TCPTCP的的SocketSocket编程原理编程原理11.3.3基于基于TCP的的Socket编程实现编程实现u 实现一个简单的聊天程序实现一个简单的聊天程序u 服务器端网络程序的基本生命周期是:服务器端网络程序的基本生命周期是:(1)利用)利用ServerSocket()构造方法在指定端口号后创建一构造方法在指定端口号
28、后创建一个新的个新的ServerSocket实例对象实例对象(2)ServerSocket利用它的利用它的accept()方法在指定端口监方法在指定端口监听到客户端连接。听到客户端连接。accept()方法一直处于方法一直处于阻塞状态阻塞状态,直到,直到有客户端试图建立连接,有客户端试图建立连接,accept()方法返回连接客户端和方法返回连接客户端和服务器的服务器的Socket(3)调用)调用getInputStream()方法、方法、getOutputStream()方法得到与客户端通信的输入流和方法得到与客户端通信的输入流和输出流输出流(4)服务器和客户端根据双方都承认的协议进行交互,直
29、到)服务器和客户端根据双方都承认的协议进行交互,直到关闭连接时为止关闭连接时为止(5)服务器、客户端或两者均关闭连接)服务器、客户端或两者均关闭连接(6)服务器返回步骤)服务器返回步骤2,等待下一个连接到来,等待下一个连接到来uServerSocket的的3个的构造方法:个的构造方法: nServerSocket(int port)nServerSocket(int port,int queueLength)nServerSocket(int port,int backlog,InetAddress bindAddr)n例如,创建一个在例如,创建一个在80 端口使用的服务器端口使用的服务器套接
30、字:套接字:必须和客户必须和客户呼叫的端口呼叫的端口号相同号相同可能抛出可能抛出IOExceptiontry ServerSocket ss = new ServerSocket(80);catch (IOException e)System.err.println(e);u客户端网络程序的基本生命周期是:客户端网络程序的基本生命周期是:n利用构造方法利用构造方法Socket()创建一个创建一个套接字对象,与服务器的指定端口套接字对象,与服务器的指定端口号建立连接号建立连接n调用调用Socket类的类的getOutputStream()和和getInputStream()获取输出流获取输出流和
31、输入流,使用和输入流,使用InputStream()和和OutputStream()进行网络数进行网络数据的发送和接收据的发送和接收n最后关闭通信套接字最后关闭通信套接字 uSocket类的构造方法:类的构造方法:nSocket(String,int)构造一个连接指构造一个连接指定主机、指定端口号定主机、指定端口号Socket的类的类nSocket(InetAddress,int)构造一构造一个连接指定网络地址、指定端口号的个连接指定网络地址、指定端口号的Socket类类u【例例11-4】、【例例11-5】、【例例11-6】、【例例11-7】和和【例例11-8】采用多线程采用多线程的网络编程技
32、术实现一个简单聊天系统的网络编程技术实现一个简单聊天系统11.3.4基于基于UDP的的Socket编程原理编程原理u用户数据报协议(用户数据报协议(UDP)是一种无连接的协议)是一种无连接的协议u数据报是以数据报是以UDP为通信协议的一种通信方式,它为通信协议的一种通信方式,它为两台计算机之间提供一种非可靠的无连接投递为两台计算机之间提供一种非可靠的无连接投递报文的通信服务,由于这种通信方式不建立连接报文的通信服务,由于这种通信方式不建立连接,所以不能保证所有的数据都能准确、有序地送,所以不能保证所有的数据都能准确、有序地送到目的地,用户无法知道数据能否正确到达目的到目的地,用户无法知道数据能
33、否正确到达目的地主机,也不能确定数据到达目的地的顺序是否地主机,也不能确定数据到达目的地的顺序是否和发送的顺序相同和发送的顺序相同u基于基于UDP的信息传递简单高效,但不提供可靠性的信息传递简单高效,但不提供可靠性保证,数据报服务一般用于传送非关键性的数据保证,数据报服务一般用于传送非关键性的数据或应用于数据量大的环境下,如网络游戏,视频或应用于数据量大的环境下,如网络游戏,视频会议等会议等uTCP协议和协议和UDP协议各有各的用处:协议各有各的用处:n当对所传输的数据具有当对所传输的数据具有时序性时序性和和可靠性可靠性等等要求时,应使用要求时,应使用TCP协议协议;n当传输的数据比较简单、对
34、时序等无要求当传输的数据比较简单、对时序等无要求时,时,UDP协议能发挥更好的作用,如协议能发挥更好的作用,如ping,发送时间数据等,发送时间数据等UDP编程编程uJava网络网络UDP编程中,在网络上发送编程中,在网络上发送和接收数据包需要使用和接收数据包需要使用类库中类库中提供的提供的两个类两个类 : nDatagramPacketn数据容器数据容器nDatagramSocketn发送或接收发送或接收 DatagramPacketu使用使用DatagramSocket类和类和DatagramPackte类来编写发送端和类来编写发送端和接收端程序就可以实现数据报的发送和接收端程序就可以实现
35、数据报的发送和接收。接收端和发送端需要创建并运行接收。接收端和发送端需要创建并运行各自的各自的Java语言程序语言程序DatagramSocketu用于发送或接收用于发送或接收DatagramPacket对象的对象的套接字套接字u构造函数构造函数nDatagramSocket()nDatagramSocket(int port)nDatagramSocket(int port,InetAddress laddr) u可用方法可用方法nvoid send(DatagramPacket d)nvoid receive(DatagramPacket p)nvoid close()构造数据报套接构造数
36、据报套接字并将其绑定到字并将其绑定到本地主机上任何本地主机上任何可用的端口及通可用的端口及通配符地址配符地址 构造数据报套接构造数据报套接字并将其绑定到字并将其绑定到本地主机指定端本地主机指定端口及通配符地址口及通配符地址 构造数据报套接构造数据报套接字并将其绑定到字并将其绑定到本地主机指定端本地主机指定端口及指定地址口及指定地址 u在在DatagramSocket上总是启用上总是启用UDP广播发送。广播发送。为了接收广播包,应将为了接收广播包,应将 DatagramSocket 绑定到绑定到通配符地址。在某些实现中,将通配符地址。在某些实现中,将 DatagramSocket 绑定到一个更加
37、具体的地址时绑定到一个更加具体的地址时广播包也可以被接收。广播包也可以被接收。u例如:例如:DatagramSocket s = new DatagramSocket(null);s.bind(new InetSocketAddress(8888); u等价于:等价于:DatagramSocket s = new DatagramSocket(8888); u两种方式都创建能在两种方式都创建能在8888端口上接收广播的端口上接收广播的DatagramSocket。 抽象类SocketAddress的子类 ,表示IP套接字地址DatagramPacketu起到数据容器作用的类起到数据容器作用的类
38、u构造函数构造函数nDatagramPacket(byteDatagramPacket(byte data, int size) data, int size)nDatagramPacket(byteDatagramPacket(byte data, int size, data, int size, InetAddress I, int port)InetAddress I, int port)图图11-10基于基于UDP的的Socket编程原理编程原理u接收端程序编写(服务器端)步骤:接收端程序编写(服务器端)步骤:(1 1)通过构造方法)通过构造方法DatagramSocket(int
39、DatagramSocket(int port)port)创建一个数据报套接字,并绑定到指创建一个数据报套接字,并绑定到指定端口上;定端口上;(2 2)调用)调用DatagramPacket(byte buf,int DatagramPacket(byte buf,int length)length),建立一个字节数组以接收,建立一个字节数组以接收UDPUDP包;包;(3 3)调用)调用DatagramSocketDatagramSocket类的类的receive()receive(),接,接收收UDPUDP包;包;(4 4)最后调用)最后调用DatagramSocketDatagramSoc
40、ket类类close()close()关闭关闭数据报套接字。数据报套接字。u包的消息包括:发送方、消息长度、消息自身包的消息包括:发送方、消息长度、消息自身u发送端程序编写(客户端)步骤:发送端程序编写(客户端)步骤:(1)通过构造方法)通过构造方法DatagramSocket()创建一创建一个数据报套接字;个数据报套接字;(2)调用)调用DatagramPacket(byte buf,int length,InetAddress address,int port)建立建立要发送的要发送的UDP包;包;(3)调用)调用DatagramSocket类的类的send()方法,方法,发送发送UDP包
41、;包;(4)最后调用)最后调用DatagramSocket类类close()方法方法,关闭数据报套接字。,关闭数据报套接字。11.3.5基于基于UDP的的Socket编程实现编程实现u【例例11-9】和和【例例11-10】分别实现分别实现基于基于UDP的服务器端和客户端的服务器端和客户端n【例例11-9】UDPServer.javan【例例11-10】UDPClient.java11.3.6基于基于SSL的的Socket编程原理编程原理u用户在网上商店购物,输入信用卡信息,进行用户在网上商店购物,输入信用卡信息,进行网上支付交易时,存在不安全因素:网上支付交易时,存在不安全因素:n用户的信用卡
42、信息在网络上传输时有可能被用户的信用卡信息在网络上传输时有可能被他人截获他人截获n用户发送的信息在网络上传输时有可能被非用户发送的信息在网络上传输时有可能被非法篡改,数据完整性被破坏法篡改,数据完整性被破坏n用户正在访问的用户正在访问的Web站点是个非法站点,站点是个非法站点,专门从事网上欺诈活动,如骗取客户资金专门从事网上欺诈活动,如骗取客户资金uSSL采用加密技术来实现安全通信,保证通信采用加密技术来实现安全通信,保证通信数据的保密性和完整性,保证通信双方可以验数据的保密性和完整性,保证通信双方可以验证对方的身份证对方的身份u1994年,网景公司推出年,网景公司推出SSL(Secure S
43、ockets Layer)安全网络通信协议)安全网络通信协议u采用多种密钥对进行通信的数据进行加密,提供采用多种密钥对进行通信的数据进行加密,提供网络通信的保密性和可靠性网络通信的保密性和可靠性u包括:包括:nSSL记录协议:规定如何将要传输的数据封装记录协议:规定如何将要传输的数据封装在记录中,即规定记录的格式、记录的加密方在记录中,即规定记录的格式、记录的加密方式、记录的压缩和解压缩方式等。每个记录的式、记录的压缩和解压缩方式等。每个记录的最大长度是最大长度是32767字节字节nSSL握手协议:规定了在服务器端和客户端之握手协议:规定了在服务器端和客户端之间进行通信的步骤、选择数据加密方式
44、的步骤间进行通信的步骤、选择数据加密方式的步骤以及进行数据通信的步骤等以及进行数据通信的步骤等u加密通信技术的原理:加密通信技术的原理:n数据从一端发送到另一端时,发送者先对数据从一端发送到另一端时,发送者先对数据加密,然后在发给接收者。在网络上数据加密,然后在发给接收者。在网络上传输的是加密的数据传输的是加密的数据n如果有人在网络上非法截获了这批数据,如果有人在网络上非法截获了这批数据,由于没有解密的密钥,就无法获得真正的由于没有解密的密钥,就无法获得真正的原始数据原始数据n接收者收到加密的数据后,先对数据解密接收者收到加密的数据后,先对数据解密,然后再处理,然后再处理u除了对数据加密通通信
45、,除了对数据加密通通信,SSL还采用了身份还采用了身份认证机制,确保通信双方都可以验证对方的认证机制,确保通信双方都可以验证对方的真实身份真实身份u当客户通过安全的链接和服务器通信时,服当客户通过安全的链接和服务器通信时,服务器会现象客户出示它的安全证书,这个证务器会现象客户出示它的安全证书,这个证书声明该服务器是安全的而且的确是这个服书声明该服务器是安全的而且的确是这个服务器务器u每个证书在全世界范围内是唯一的,其它非每个证书在全世界范围内是唯一的,其它非法服务器无法假冒原始服务器的身份法服务器无法假冒原始服务器的身份u可以把安全证书比作电子身份证可以把安全证书比作电子身份证u安全证书既包含了用于加密数据的密钥,又安全证书既包含了用于加密数据的密钥,又包含了证实身份的数字签名包含了证实身份的数字签名u安全证书采用公钥加密技术:用一对非对称安全证书采用公钥加密技术:用一对非对称的密钥进行加密或解密。每一对密钥由公钥的密钥进行加密或解密。每一对密钥由公钥和私钥组成。公钥被广泛发布,私钥是隐密和私钥组成。公钥被广泛发布,私钥是隐密的,不公开。用公钥加密的数据只能被私钥的,不公开。用公
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年胶条项目建议书
- 2025年GPS接收设备及其综合应用系统项目发展计划
- 人工智能在物流领域的应用试题及答案
- 从容应对CPSM考试试题及答案
- 预防吸毒主题班会
- 细胞信号转导的重要性试题及答案
- 福建省福州市第三中学2025届高三下第一次测试化学试题含解析
- 巩固知识点CPMM试题及答案
- 2024年CPSM考试幕后分析试题及答案
- 深入剖析2024年CPMM试题趋势与观察试题及答案
- 【SRAM电路设计与版图实现12000字(论文)】
- (高清版)DZT 0217-2020 石油天然气储量估算规范
- 巴巴爸爸搬大树
- 第2课中华文化的世界意义教学设计-高中历史选择性必修3文化交流与传播
- 代码转交确认函
- 儿童康复的健康宣教课件
- 土地纠纷答辩状范本
- 《大数据技术在财务中的应用》 课件 项目1-3 Python概述
- 2024-2025常州新课结束考试化学试卷与答案
- 化工生产操作工培训手册
- 夜泊牛渚怀古
评论
0/150
提交评论