Java网络通信PPT课件_第1页
Java网络通信PPT课件_第2页
Java网络通信PPT课件_第3页
Java网络通信PPT课件_第4页
Java网络通信PPT课件_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Java网络通信网络通信2021/3/9111.Java11.Java网络通信网络通信周筱媛周筱媛西安科技大学西安科技大学 计算机系计算机系Email: Tel:ava网络通信网络通信2021/3/92 主要内容:主要内容:学习如何通过学习如何通过包中的类直接在包中的类直接在程序中实现网络通信。程序中实现网络通信。Java网络通信网络通信2021/3/9311.1 URL类编程类编程 URL(Uniform Resource Locator)是统一资)是统一资源定位器的简写。它表示源定位器的简写。它表示Internet上某一资源的地上某一资源的地址,这些资源包括址,这

2、些资源包括Web页、文本文件、图形(像)页、文本文件、图形(像)文件和声频片段等。通过文件和声频片段等。通过URL可以访问可以访问Internet和和WWW。浏览器通过解析给定的。浏览器通过解析给定的URL可以在网络可以在网络上查找相应的文件或资源。上查找相应的文件或资源。Java网络通信网络通信2021/3/9411.1.1 URL的组成和的组成和URL类类u URL的组成的组成 protocol :/resourceNameu 协议名指明获取资源所使用的传输协议,如协议名指明获取资源所使用的传输协议,如httphttp、ftpftp等;等;u 资源包括主机名、端口号、文件的引用;资源包括主

3、机名、端口号、文件的引用;u 如如 http:/http:/ http:/localhost:8080/jsp/temp.htmlhttp:/localhost:8080/jsp/temp.html 协议名协议名 资资 源源Java网络通信网络通信2021/3/95u URL类类 Java将将URL封装成封装成URL类,通过构造方法可类,通过构造方法可以实例化一个以实例化一个URL对象。对象。 public URL(String spec) public URL( URL url, String file) public URL(String protocol, String host, St

4、ring file) public URL(String protocol, String host, int port, String file)URL myURL = new URL(“http:/”);URL mydoc = new URL(myURL, “index.html”);URL myURL = new URL(“http”, “”, “index.html”);URL myURL = new URL(“http”, “”, 80,“index.html”);Java网络通信网络通信2021/3/96 URL类编程中的常见异常类编程中的常见异常 MalformedURLExce

5、ptiontry URL myURL = new URL(“”); catch(Exception e) /异常处理异常处理 Java网络通信网络通信2021/3/97URL类的成员方法:类的成员方法: public final Obect getContent(); public String getFile(); public String getHost(); public int getPort(); public String getProtocol(); public String toExternalForm(); public String toString(); public

6、 final InputStream openStream() throws ; public URLConnection openConnection();Java网络通信网络通信2021/3/98例例1 获取获取URL对象属性对象属性import . *;public class myurlpub1ic static void main(String args) try URL url=new URL(http:/www. tsinghua. edu .cn: 80/home/homepage.htm) System.out.println(the Protocol: +url.getPr

7、otocol(); System.out.Println( the hostname: +url .getHost(); System.out.println(the port: +url.getPort(); System.out.println(the file: +url.getFle(); System.out.println(the ext: +url.toExternalForm), System. out. println(url. toString(); catch(Exception e) System.out.println(e); the protocol:httpthe

8、 hostname: www. tsinghua. edu. cnthe port:80the file: /homelhomepage. htmlthe ext: http:/www.tsinghua. edu. cn: 80/home/homepage .htmlhttp:/www.tsinghua. edu. cn: 80/home/homepage .htmlJava网络通信网络通信2021/3/99u 使用使用URL类读取类读取WWW信息信息 通过通过openStream()与指定的与指定的URL建立连接并返回一建立连接并返回一个个InputStream类的对象,然后从这一连接中读取

9、数据。类的对象,然后从这一连接中读取数据。常用的读取网络资源数据的步骤如下:常用的读取网络资源数据的步骤如下:创建创建URL类的实例对象;类的实例对象;通过通过URL类的实例对象的类的实例对象的openStream方法建立方法建立连接;连接;读取数据;读取数据;关闭数据流;关闭数据流;Java网络通信网络通信2021/3/910例例2 用用url.openStream()方法读取方法读取WWW数据数据import .*;import java.io.*;public class OpenStream public static void main(String args) throws Exc

10、eption URL url=new URL(http:/); BufferedReader in=new BufferedReader( new InputStreamReader(url.openStream(); String inputLine; while(inputLine=in.readLine()!=null) System.out.println(inputLine); in.close(); Java网络通信网络通信2021/3/911u 使用使用URLConnection连接连接WWW URLConnection的对象表示的对象表示Java程序与程序与URL在网在网络上的

11、通信连接。络上的通信连接。 使用使用URLConnection对象获取对象获取WWW资源的步骤:资源的步骤:创建一个创建一个URL对象;对象;调用调用URL对象的对象的getConnection()方法获得对应的方法获得对应的URLConnection对象;对象;获取输入流并读数据;获取输入流并读数据;关闭连接;关闭连接;Java网络通信网络通信2021/3/912例例3 使用使用URLConnection连接服务器连接服务器import . *;import java.io. *;public class urlcon public static void main(String args)

12、 InputStream is; OutputStream os; int b; try URL url=new URL(http:/); URLConnection uric= url.openConnection(); System.out.println(the length:+uric.getContentLength(); System.out.println(the type:+uric.getContentType(); System.out.println(the date: +uric.getDate(); System.out.println(the lastmodifie

13、d:+uric.getLastModified(); os=new FileOutputStream(d:down.html );if(uric.getContentLength()=1) is=uric.getInputStream(); while(b=is.read()!= -1) os.write(b); System.out.write(b); else System.out.println(no content); catch(Exception e) System.out.println(e); Java网络通信网络通信2021/3/913例例11.5 利用利用URLConnec

14、tion向服务器发送查询信息,并向服务器发送查询信息,并接受服务器返回的参数。接受服务器返回的参数。 P254Java网络通信网络通信2021/3/914二、二、Socket通信通信预备知识预备知识 Socket是网络上的两个程序通过一个双向的通信连接实现数据是网络上的两个程序通过一个双向的通信连接实现数据交换的通道。或者说网络上的两个程序通过一个双向的通讯连接交换的通道。或者说网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个实现数据的交换,这个双向链路的一端称为一个Socket,可以说,可以说Socket是面向客户是面向客户/服务器模型设计的。服务器模型设计的

15、。Socket通信机制提供了两通信机制提供了两种通讯方式:有联接种通讯方式:有联接(TCP)和无联接和无联接(UDP)方式,分别面向不同的方式,分别面向不同的应用需求。应用需求。 TCP是是以连接为基础以连接为基础的流式协议,通信前,首先要建立连接,的流式协议,通信前,首先要建立连接,然后才能通信。因此,能保证同步、准确地进行通信。如果应用然后才能通信。因此,能保证同步、准确地进行通信。如果应用程序需要可靠的点对点通信,一般采用程序需要可靠的点对点通信,一般采用TCP这种协议。比如:这种协议。比如:HTTP,ftp,telnet等应用程序,确保其可靠性对于程序运行是非常等应用程序,确保其可靠性

16、对于程序运行是非常关键的。关键的。 Java网络通信网络通信2021/3/915 UDP是一种无连接的协议,是一种无连接的协议,其系统开销比无联接方式小,但其系统开销比无联接方式小,但通信链路提供了不可靠的数据报服务,每个数据报都是一个独立通信链路提供了不可靠的数据报服务,每个数据报都是一个独立的信息,不能保证信源所传输的数据一定能够到达信宿。在该方的信息,不能保证信源所传输的数据一定能够到达信宿。在该方式下,通信双方不必创建一个联接过程和建立一条通讯链路,网式下,通信双方不必创建一个联接过程和建立一条通讯链路,网络通信操作在不同的主机和进程之间转发进行。络通信操作在不同的主机和进程之间转发进

17、行。 端口端口: 数据通过网络到达一台主机数据通过网络到达一台主机(或准确的说是主机的网卡或准确的说是主机的网卡)是通过是通过IP地址实现的。但当该主机运行多个程序时如何识别数据地址实现的。但当该主机运行多个程序时如何识别数据是属于哪个程序的呢是属于哪个程序的呢? 这就是端口。一个端口只能绑定一个应用这就是端口。一个端口只能绑定一个应用程序。通过程序。通过TCP/UDP通信的应用程序必须知道对方的通信的应用程序必须知道对方的IP地址和端地址和端口号才能通信。端口号可取从口号才能通信。端口号可取从065535,其中,其中,01023为保留为保留端口,提供给众所周知的一些服务。端口,提供给众所周知

18、的一些服务。Java网络通信网络通信2021/3/916Socket通信的一般过程通信的一般过程 使用使用Socket进行客户进行客户/服务器通信程序设计的一般服务器通信程序设计的一般过程是这样的:过程是这样的: Server端端listen(监听)某个端口是否有连接请求,(监听)某个端口是否有连接请求, Client端向端向Server端发出端发出connect(连接连接)请求,请求, Server端向端向Client端发回端发回Accept(接受接受)消息。消息。 一个连接就建立好了,之后客户端、服务器端都可一个连接就建立好了,之后客户端、服务器端都可以用以用send()、write()等

19、方法与对方通信。等方法与对方通信。Java网络通信网络通信2021/3/917 对于一个功能齐全的对于一个功能齐全的Socket的工作过程包含以下的工作过程包含以下四个基本步骤:四个基本步骤: 创建创建Socket; 打开连接到打开连接到Socket的输入输出流;的输入输出流; 按照一定的协议对按照一定的协议对Socket进行读进行读/写操作;写操作;关闭关闭Socket。Java网络通信网络通信2021/3/9181.创建创建Socket 创建客户端创建客户端Socket可以通过可以通过Socket的构造方法,介绍如下:的构造方法,介绍如下: public Socket(String hos

20、t,int port) public Socket(InetAddress address,int port) / / 用该方法创建一个与指定远程主机及其端口建立连接;用该方法创建一个与指定远程主机及其端口建立连接; public Socket(String host,Int port,boolean stream) / stream指明指明Socket是流式是流式Socket还是数据报式还是数据报式Socket public socket(InetAddress address,Int port,boolean stream) Serversocket的构造方法为:的构造方法为: publi

21、c Serversocket(int port) /指定端口号来创建指定端口号来创建Serversocket对象,该端口为端主机的端口;对象,该端口为端主机的端口;public Serversocket(int port,int count)/用指定的端口号创建用指定的端口号创建Serversocket对象,如果该端的端口正在使用,对象,如果该端的端口正在使用,只等待只等待count毫秒。毫秒。Java网络通信网络通信2021/3/9192. 打开输入打开输入/输出流输出流 public Inputstream getInputstream( ) /得到得到 Socket建立的输入流建立的输入

22、流 pubic Outputstream getoutputstream( ) /得到得到 Socket建立的输出流建立的输出流 Socket对象的其他方法:对象的其他方法: public void close() public InetAddress getlnetAddress() /得到远程主机得到远程主机 IP地址的地址的 InetAddress对象对象 public int getLocalPort() /得到与远程机连接的本地机的端口号得到与远程机连接的本地机的端口号Java网络通信网络通信2021/3/920Serversocket对象的其他方法:对象的其他方法: public

23、Socket accept()() /获取与客户端连接的获取与客户端连接的 Socket对象对象 /accept()为一个阻塞性方法,即该方法被调用后,将等待客户的为一个阻塞性方法,即该方法被调用后,将等待客户的请求,直到有一个客户启动并请求连接到相同的端口,然后请求,直到有一个客户启动并请求连接到相同的端口,然后accept()返回一个对应于客户的返回一个对应于客户的Socket。public void close()()public InetAddrss getInetAddress()() / 得到与客户端相连的得到与客户端相连的 InetAddress对象对象public int ge

24、tLocalPort()() / 得到服务器在监听的端口号得到服务器在监听的端口号 Java网络通信网络通信2021/3/921例例11.3 P241例例11.4 P243Java网络通信网络通信2021/3/9221) 客户端的编程流程客户端的编程流程: 打开打开Socket,新建一个套接字;新建一个套接字; 为套接字建立一个输入和输出流;为套接字建立一个输入和输出流; 根据服务器协议从套接字读入或根据服务器协议从套接字读入或向套接字写入;向套接字写入; 清除套接字和输入清除套接字和输入/输出流;输出流;2)服务器端的编程流程服务器端的编程流程: 打开打开Server Socket,创建一个

25、服务器型套创建一个服务器型套接字和一个普通套接字,服务器型套接接字和一个普通套接字,服务器型套接字在指定端口为客户端请求的字在指定端口为客户端请求的Socket服服务;务; 使用使用ServerSocket类的类的accept()方法使服方法使服务器型套接字处于监听状态并把监听结务器型套接字处于监听状态并把监听结果返回给普通套接字;果返回给普通套接字; 为该普通套接字创建输入和输出流;为该普通套接字创建输入和输出流; 从输入和输出流中读入或写入字节流,从输入和输出流中读入或写入字节流,进行相应的处理,并将结果返回给客户进行相应的处理,并将结果返回给客户端;端; 在客户端和服务器工作结束后关闭所

26、有在客户端和服务器工作结束后关闭所有的对象的对象,如服务器型的套接字如服务器型的套接字,普通套接字普通套接字,输入和输出流。输入和输出流。小结:小结:Java网络通信网络通信2021/3/923三、数据报通信三、数据报通信 数据报(数据报(Datagram)使网络层数据单元在介质上)使网络层数据单元在介质上传输信息的一种逻辑分组格式,它是一种在网络中传传输信息的一种逻辑分组格式,它是一种在网络中传播的、独立的、自身包含地址信息的消息,它能否到播的、独立的、自身包含地址信息的消息,它能否到达目的地,到达的时间,到达时内容是否会变化不能达目的地,到达的时间,到达时内容是否会变化不能准确知道的。它的

27、通讯双方是不需要建立连接的,对准确知道的。它的通讯双方是不需要建立连接的,对于一些不需要很高质量的应用程序来说,数据报通讯于一些不需要很高质量的应用程序来说,数据报通讯是一个非常好的选择。是一个非常好的选择。 在在Java的的包中有两个类包中有两个类DatagramSocket和和DatagramPacket用来支持数据报通信。用来支持数据报通信。Java网络通信网络通信2021/3/924DatagramSocket的构造方法:的构造方法: public DatagramSocket() /构造一个数据报构造一个数据报socket,并使其与本地主机任一可用的端,并使其与本地主机任一可用的端口

28、连接。若打不开口连接。若打不开socket则抛出则抛出SocketException异常。异常。 public DatagramSocket(int port) /构造一个数据报构造一个数据报socket,并使其与本地主机指定的端口连,并使其与本地主机指定的端口连接。若打不开接。若打不开socket或或socket无法与指定的端口连接则抛出无法与指定的端口连接则抛出SocketException异常。异常。Java网络通信网络通信2021/3/925DatagramPacket的构造方法:的构造方法: DatagramPacket( byte bufferedarray , int offse

29、t, int length, InetAddress address, int port) /构造一个包长度为构造一个包长度为length的包传送到指定主机指定端口号上的包传送到指定主机指定端口号上的数据报文包,参数的数据报文包,参数length必须小于等于必须小于等于bufferedarry.length DatagramPacket( byte bufferedarray , int length) /接收从服务器返回的结果数据报文接收从服务器返回的结果数据报文 ,只需指明存放接收的数,只需指明存放接收的数据报的缓冲区和长度。据报的缓冲区和长度。 Java网络通信网络通信2021/3/92

30、6在在JavaJava中实现客户端与服务器之间数据报通讯的方法中实现客户端与服务器之间数据报通讯的方法 : :n 客户端应用程序的工作流程客户端应用程序的工作流程n 建立数据报通讯的建立数据报通讯的Socket,我们可以通过创建一个,我们可以通过创建一个DatagramSocket对象来实现它。对象来实现它。创建一个数据报文包,用来实现无连接的包传送服务。每个数创建一个数据报文包,用来实现无连接的包传送服务。每个数据报文包是用据报文包是用DatagramPacket类来创建,类来创建,DatagramPacket对象对象封装了数据报包数据,包长度,目标地址,目标端口。作为客封装了数据报包数据,

31、包长度,目标地址,目标端口。作为客户端要发送数据报文包,要调用户端要发送数据报文包,要调用DatagramPacket类的构造方法类的构造方法创建创建DatagramPacket对象,将要发送的数据和包文目的地址等对象,将要发送的数据和包文目的地址等信息放入对象之中。信息放入对象之中。Java网络通信网络通信2021/3/927n 创建完创建完DatagramSocket和和DatagramPacket对象,就可以发送对象,就可以发送数据报文包了。发送是通过调用数据报文包了。发送是通过调用DatagramSocket对象的对象的send方法实现,它需要以方法实现,它需要以DatagramPacket对象为参数,将刚才封对象为参数,将刚才封装进装进DatagramPacket对象中的数据组成数据报发出。对象中的数据组成数据报发出。n 也可以接收数据报文,为了接收从服务器返回的结果数据报也可以接收数据报文,为了接收从服务器返回的结果数据报文,需要创建一个新的文,需要创建一个新的DatagramPacket对象,调用对象,调用DatagramSocket对象的对象的receive()方法来完成接收数据报的工作,方法来完成接收数据报的工作,此时需要将上面创建的此时需要将上面创

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论