《第16章-实现网络通信.ppt》由会员分享,可在线阅读,更多相关《第16章-实现网络通信.ppt(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、JavaJava程序设计基础程序设计基础-国家级十二五规划教材国家级十二五规划教材-大连理工大学出版社大连理工大学出版社第第16章章 实现网络通信实现网络通信主讲:胡伏湘JavaJava程序设计基础程序设计基础-国家级十二五规划教材国家级十二五规划教材-大连理工大学出版社大连理工大学出版社复习提问 1 1、什么线程什么线程?2、采用多线程处理有什么优势?、采用多线程处理有什么优势?3、通过哪些方法可以创建多线程?、通过哪些方法可以创建多线程?4、如何同步多线程?、如何同步多线程?JavaJava程序设计基础程序设计基础-国家级十二五规划教材国家级十二五规划教材-大连理工大学出版社大连理工大学出
2、版社预习与提问预习与提问 1 1、举例说明、举例说明URLURL的组成?的组成?2 2、什么是、什么是TCP/UDPTCP/UDP?两者有什么不同?两者有什么不同?3 3、网络端口是什么?指出下面端口对应的、网络端口是什么?指出下面端口对应的应用程序。应用程序。7 21 23 25 807 21 23 25 80JavaJava程序设计基础程序设计基础-国家级十二五规划教材国家级十二五规划教材-大连理工大学出版社大连理工大学出版社本章提要 主要知识点:1.网络通信基本理论与方法;2.URL编程;3.Socket套接字编程;4.Datagram数据报编程 学习目标:理解网络协议与IP地址的概念,
3、掌握URL类的用法、Socket和Datagram通信机制,能够运用URL、Socket、Datagram实现网络软件的通信功能。JavaJava程序设计基础程序设计基础-国家级十二五规划教材国家级十二五规划教材-大连理工大学出版社大连理工大学出版社16.1 16.1 认识网络通信认识网络通信16.1.1 16.1.1 网络编程基本理论网络编程基本理论 在在TCP/IPTCP/IP协议的层次结构中,传输层提供在源协议的层次结构中,传输层提供在源结点和目标结点的两个实体之间可靠的端到端结点和目标结点的两个实体之间可靠的端到端数据传输,数据传输,TCP/IPTCP/IP模型提供了了两种传输协议,模
4、型提供了了两种传输协议,即传输控制协议即传输控制协议TCPTCP和用户数据报协议和用户数据报协议UDPUDP。TCPTCP是面向连接的协议,在传递数据之前必须是面向连接的协议,在传递数据之前必须和目标结点建立连接,然后再传送数据,传送和目标结点建立连接,然后再传送数据,传送数据结束后,关闭连接。而数据结束后,关闭连接。而UDPUDP是一种无连接是一种无连接协议,无须事先建立连接即可直接传送带有目协议,无须事先建立连接即可直接传送带有目标结点信息的数据报标结点信息的数据报 JavaJava程序设计基础程序设计基础-国家级十二五规划教材国家级十二五规划教材-大连理工大学出版社大连理工大学出版社16
5、.1 认识网络通信认识网络通信16.1.1 16.1.1 网络编程基本理论网络编程基本理论 端口(端口(PortPort)和和IPIP地址为网络通信的应地址为网络通信的应用程序提供了一种确定的地址标识,用程序提供了一种确定的地址标识,IPIP地址表示了发送端口的目的计算机,而地址表示了发送端口的目的计算机,而端口表明了将数据包发送给目的计算机端口表明了将数据包发送给目的计算机上的哪一个应用程序上的哪一个应用程序 JavaJava程序设计基础程序设计基础-国家级十二五规划教材国家级十二五规划教材-大连理工大学出版社大连理工大学出版社16.1 认识网络通信认识网络通信16.1.2 16.1.2 网
6、络编程的基本概念网络编程的基本概念 1 1、IPIP地址地址用于标识网络上的计算机或者其它网络设备,由用于标识网络上的计算机或者其它网络设备,由4 4个字节组成个字节组成 2 2、TCP TCP 与与UDPUDPTCPTCP提供两台计算机之间无差错的可靠数据传输,提供两台计算机之间无差错的可靠数据传输,是面向连接的通信协议。是面向连接的通信协议。UDPUDP是无连接通信协议,不保证可靠的数据传输是无连接通信协议,不保证可靠的数据传输 ,收到数据方无须确认,收到数据方无须确认 JavaJava程序设计基础程序设计基础-国家级十二五规划教材国家级十二五规划教材-大连理工大学出版社大连理工大学出版社
7、16.1 认识网络通信认识网络通信16.1.2 16.1.2 网络编程的基本概念网络编程的基本概念 3 3、SocketSocket套接字套接字SocketSocket套接字是网络驱动层提供给应用程序编程套接字是网络驱动层提供给应用程序编程的接口和管理方法,处理数据接收与输出的接口和管理方法,处理数据接收与输出 4 4、数据报、数据报datagraphdatagraph是一种面向非连接的、以数据报方式工作的通信,是一种面向非连接的、以数据报方式工作的通信,适用于网络层不可靠的数据传输与访问适用于网络层不可靠的数据传输与访问 5 5、URLURL网络统一资源定位器,确定数据在网络中的位置网络统一
8、资源定位器,确定数据在网络中的位置 JavaJava程序设计基础程序设计基础-国家级十二五规划教材国家级十二五规划教材-大连理工大学出版社大连理工大学出版社16.1 认识网络通信认识网络通信16.1.3 16.1.3 网络编程的基本方法网络编程的基本方法 JavaJava语言专门为网络通信提供了系统软件语言专门为网络通信提供了系统软件包包,利用它提供的有关类及方利用它提供的有关类及方法可以快速开发基于网络的应用程序法可以快速开发基于网络的应用程序 JavaJava程序设计基础程序设计基础-国家级十二五规划教材国家级十二五规划教材-大连理工大学出版社大连理工大学出版社16.2 URL16.2 U
9、RL编程编程 16.2.1 URL16.2.1 URL的构成的构成 URLURL用来标识用来标识InternetInternet的资源,包括取得的资源,包括取得获得资源采用的地址,通过获得资源采用的地址,通过URLURL可以访问可以访问InternetInternet的文件和其它资源。的文件和其它资源。URLURL的一般的一般格式是:格式是:protocol:/protocol:/hostName:port/resourcePahostName:port/resourcePathth 即:即:协议名:协议名:/主机名:端口号主机名:端口号/资源路径资源路径 JavaJava程序设计基础程序设计
10、基础-国家级十二五规划教材国家级十二五规划教材-大连理工大学出版社大连理工大学出版社16.2 URL16.2 URL编程编程 16.2.2 URL16.2.2 URL类类 URLURL的构造方法很多,主要包括:的构造方法很多,主要包括:public public URLURL(StringString urlurl)如:如:URL url1=new URL url1=new URL(http:/);URL(http:/);public public URLURL(URL URL baseURL,StringbaseURL,String relativeURLrelativeURL)baseUR
11、LbaseURL绝对地址,绝对地址,relativeURLrelativeURL相对位置相对位置 JavaJava程序设计基础程序设计基础-国家级十二五规划教材国家级十二五规划教材-大连理工大学出版社大连理工大学出版社16.2 URL16.2 URL编程编程 16.2.2 URL16.2.2 URL类类 2 2、URLURL类的主要方法类的主要方法URLURL类提供了很多方法,主要用于设置或者类提供了很多方法,主要用于设置或者获取有关参数,如:获取有关参数,如:getContentgetContent()/()/获取获取URLURL的内容的内容getDefaultPortgetDefaultP
12、ort()()/获获取取URLURL的的默默认认端口端口JavaJava程序设计基础程序设计基础-国家级十二五规划教材国家级十二五规划教材-大连理工大学出版社大连理工大学出版社16.2 URL16.2 URL编程编程 例例16-1:利用:利用URL获取获取WWW服务器文件服务器文件内容内容(http:/)JavaJava程序设计基础程序设计基础-国家级十二五规划教材国家级十二五规划教材-大连理工大学出版社大连理工大学出版社16.2 URL16.2 URL编程编程 16.2.3 16.2.3 URLConnectionURLConnection类类 1 1、URLURL连接的创建连接的创建URL
13、ConnectionURLConnection类的构造方法只有一个,即:类的构造方法只有一个,即:URLConnection(URLURLConnection(URLurlurl)/)/构建一个与构建一个与URLURL的连接的连接 JavaJava程序设计基础程序设计基础-国家级十二五规划教材国家级十二五规划教材-大连理工大学出版社大连理工大学出版社16.2 URL16.2 URL编程编程 16.2.3 16.2.3 URLConnectionURLConnection类类 URLConnectionURLConnection类的方法很多,可以返回或类的方法很多,可以返回或者设置资源长度、最新
14、更新时间、编码、者设置资源长度、最新更新时间、编码、标题、缓冲区、许可证等全方位的信息。标题、缓冲区、许可证等全方位的信息。用户创建了用户创建了URLURL类对象后,通过其类对象后,通过其openConnectionopenConnection方法获得方法获得URLConnectionURLConnection类的对象类的对象 JavaJava程序设计基础程序设计基础-国家级十二五规划教材国家级十二五规划教材-大连理工大学出版社大连理工大学出版社16.2 URL16.2 URL编程编程 16.2.3 URLConnection类类 2 2、读写操作、读写操作建立好了建立好了URLURL连接,就
15、可针对这个连接的输入流连接,就可针对这个连接的输入流(InputStreamInputStream)进行读操作,也可以可以针进行读操作,也可以可以针对这个连接的输出流(对这个连接的输出流(OutStreamOutStream)进行写操进行写操作,这时需要先调用方法作,这时需要先调用方法setDoOutputsetDoOutput将输入将输入(OutputOutput)属性设置为真(属性设置为真(truetrue),),指定该连指定该连接后写入内容接后写入内容 JavaJava程序设计基础程序设计基础-国家级十二五规划教材国家级十二五规划教材-大连理工大学出版社大连理工大学出版社16.2 URL
16、16.2 URL编程编程 16.2.3 16.2.3 URLConnectionURLConnection类类 3 3、使用、使用URLConnectionURLConnection类进行通信的基本步骤类进行通信的基本步骤创建创建URLConnectionURLConnection类的对象类的对象第一步:建立第一步:建立URLURL对象,第二步调用这个对象的对象,第二步调用这个对象的openConnectionopenConnection方法,返回一个对应其方法,返回一个对应其URLURL地址地址的的URLConnectionURLConnection对象。对象。建立输入输出数据流建立输入输出
17、数据流利用利用URLConnectionURLConnection类的方法类的方法getInputStreamgetInputStream和和getOutputStreamgetOutputStream获取输入输出数据流。获取输入输出数据流。从远程计算机节点上读取信息或者写入信息从远程计算机节点上读取信息或者写入信息 JavaJava程序设计基础程序设计基础-国家级十二五规划教材国家级十二五规划教材-大连理工大学出版社大连理工大学出版社16.2 URL16.2 URL编程编程 16.2.3 16.2.3 URLConnectionURLConnection类类例例16-2:通通过过类类URLC
18、onnection,读取读取网站首页内容。网站首页内容。JavaJava程序设计基础程序设计基础-国家级十二五规划教材国家级十二五规划教材-大连理工大学出版社大连理工大学出版社16.3 实现基于实现基于Socket的网络通信的网络通信16.3.1 Socket16.3.1 Socket通信机制通信机制 1 1、SocketSocket通信的步骤通信的步骤 建建立立SocketSocket连连接接:通通信信开开始始之之前前由由双双方方确确认,建立一条专用虚拟连接通道认,建立一条专用虚拟连接通道数据通信:利用虚拟通道传送数据数据通信:利用虚拟通道传送数据拆拆除除连连接接:通通信信结结束束后后,将将
19、建建立立的的虚虚拟拟连连接拆除接拆除JavaJava程序设计基础程序设计基础-国家级十二五规划教材国家级十二五规划教材-大连理工大学出版社大连理工大学出版社16.3 实现基于实现基于Socket的网络通信的网络通信16.3.1 Socket16.3.1 Socket通信机制通信机制 2 2、SocketSocket类和类和ServerSocketServerSocket 包包中中提提供供了了两两个个类类:SocketSocket类类和和ServerSocketServerSocket类类,分分别别用用于于客客户户端端和和服服务务器器端端的的SocketSocket通通信信,网网络络通通信信的的
20、方方法法都都封封装在这两个类中装在这两个类中 JavaJava程序设计基础程序设计基础-国家级十二五规划教材国家级十二五规划教材-大连理工大学出版社大连理工大学出版社16.3 实现基于实现基于Socket的网络通信的网络通信16.3.1 Socket16.3.1 Socket通信机制通信机制 ServerSocket(intServerSocket(int port)port)/在在指指定定的的端端口口上上创建服务器创建服务器SocketSocket对象对象ServerSocket(intServerSocket(int port,intport,int count)count)/在在指指定定
21、的的端端口口上上创创建建服服务务器器SocketSocket对对象象,并并指指定定服服务器能够支持的最大连接数务器能够支持的最大连接数Socket(InetAddressSocket(InetAddress IP,intIP,int port)port)/使使用用指指定定IPIP地址和端口建立地址和端口建立SocketSocket对象对象Socket(StringSocket(String host,inthost,int port)port)/使使用用指指定定主机和端口建立主机和端口建立SocketSocket对象对象JavaJava程序设计基础程序设计基础-国家级十二五规划教材国家级十二五
22、规划教材-大连理工大学出版社大连理工大学出版社16.3 实现基于实现基于Socket的网络通信的网络通信16.3.1 Socket16.3.1 Socket通信机制通信机制 Socket(InetAddressSocket(InetAddress IP,intIP,int port,booleanport,boolean stream)stream)/使使用用指指定定IPIP地地址址和和端端口口建建立立SocketSocket对象,布尔值对象,布尔值streamstream表示是否采用流式通信方式。表示是否采用流式通信方式。Socket(StringSocket(String host,int
23、host,int port,booleanport,boolean stream)stream)/使使用用指指定定主主机机和和端端口口建建立立SocketSocket对对象,布尔值象,布尔值streamstream表示是否采用流式通信方式表示是否采用流式通信方式 JavaJava程序设计基础程序设计基础-国家级十二五规划教材国家级十二五规划教材-大连理工大学出版社大连理工大学出版社16.3 实现基于实现基于Socket的网络通信的网络通信例例11-3:利利用用Socket进进行行服服务务器器与与客客户户机机的的通通信信,再再进进一一步步改改造造为为聊聊天天室室程序。程序。JavaJava程序设
24、计基础程序设计基础-国家级十二五规划教材国家级十二五规划教材-大连理工大学出版社大连理工大学出版社16.4 实现基于实现基于Datagram的网络通信的网络通信16.4.1 数据报数据报Datagram通信原理通信原理包包中提供了两个类中提供了两个类DatagramSocket和和DatagramPacket用来支持数据报通信,用来支持数据报通信,DatagramSocket用于在程序之间建立传送数据用于在程序之间建立传送数据报的通信连接,报的通信连接,DatagramPacket则用来表示则用来表示一个数据报。一个数据报。DatagramSocket的构造方法有:的构造方法有:Datagra
25、mSocket()/生成一个生成一个DatagramSocket对象对象DatagramSocket(int prot)DatagramSocket(int port,InetAddress laddr)JavaJava程序设计基础程序设计基础-国家级十二五规划教材国家级十二五规划教材-大连理工大学出版社大连理工大学出版社16.4 实现基于实现基于Datagram的网络通信的网络通信16.4.2 运用运用Datagram进行通信进行通信服务器端接收服务器端接收/发送报文包括发送报文包括10步:步:1定义数据成员定义数据成员DatagramSocket socket;DatagramPacket
26、 packet;InetAddress address;/用来存放接收方的地址用来存放接收方的地址int port;/用来存放接收方的端口号用来存放接收方的端口号2创建数据报创建数据报Socket对象对象try socket=new DatagramSocket(1111);catch(.SocketException e)socket 绑定到一个本地的可用端口,等待接收客户的请绑定到一个本地的可用端口,等待接收客户的请求求JavaJava程序设计基础程序设计基础-国家级十二五规划教材国家级十二五规划教材-大连理工大学出版社大连理工大学出版社16.4 实现基于实现基于Datagram的网络通信
27、的网络通信16.4.2 运用运用Datagram进行通信进行通信3分配并填写数据缓冲区,存放从客户端接收的请求信息分配并填写数据缓冲区,存放从客户端接收的请求信息byte Buf=new byte256;4创建一个创建一个DatagramPacket用来从用来从socket接收数据,包括两个参数接收数据,包括两个参数packet=new DatagramPacket(buf,256);5服务器阻塞接收,在客户的请求报道来之前一直等待服务器阻塞接收,在客户的请求报道来之前一直等待socket.receive(packet);6从到来的包中得到地址和端口号从到来的包中得到地址和端口号InetAdd
28、ress address=packet.getAddress();int port=packet.getPort();7将要发送的数据送入发送缓冲区,数据或来自文件或键盘输入将要发送的数据送入发送缓冲区,数据或来自文件或键盘输入8建立报文包,用来从建立报文包,用来从socket上发送信息上发送信息packet=new DatagramPacket(buf,buf.length,address,port);9发送数据包发送数据包socket.send(packet);10关闭关闭socketsocket.close();JavaJava程序设计基础程序设计基础-国家级十二五规划教材国家级十二五规
29、划教材-大连理工大学出版社大连理工大学出版社16.4 实现基于实现基于Datagram的网络通信的网络通信例例16-5:运运用用Datagram方方式式,将将服服务务器器端端的的一一个个文文件件testfile.txt发发到到客客户户端端。执执行行过过程程是是:服服务务器器端端首首先先生生成成DatagramSocket监监听听某某个个端端口口,准准备备截截获获发发往往该该端端口口的的数数据据报报。一一旦旦客客户户端端发发送送一一个个针针对对服服务务器器端端机机器器和和该该端端口口的的数数据据报报,则则服服务务器器接接收收该该数数据据报报,从从中中取取得得数数据据报报的的发发送送(客客户户端端)地地址址和和发发送送(客客户户端端)端端口口,并并向向该该发发送送地地址址和和端端口口发发送送一一应应答答报报文文。报报文文内内容容为为服服务务器器端端的的文文件件testfile.txt中中的的一一行行内内容容,如如果果该该文文件件不存在,则发送服务器端的当前时间。不存在,则发送服务器端的当前时间。JavaJava程序设计基础程序设计基础-国家级十二五规划教材国家级十二五规划教材-大连理工大学出版社大连理工大学出版社本章结束本章结束主要内容:主要内容:Java网络通通原理网络通通原理URL编程编程Socket编程编程Datagram编程编程