《Java语言程序设计》课件第9章 Java网络编程.pptx

上传人(卖家):momomo 文档编号:5818488 上传时间:2023-05-11 格式:PPTX 页数:24 大小:225.88KB
下载 相关 举报
《Java语言程序设计》课件第9章 Java网络编程.pptx_第1页
第1页 / 共24页
《Java语言程序设计》课件第9章 Java网络编程.pptx_第2页
第2页 / 共24页
《Java语言程序设计》课件第9章 Java网络编程.pptx_第3页
第3页 / 共24页
《Java语言程序设计》课件第9章 Java网络编程.pptx_第4页
第4页 / 共24页
《Java语言程序设计》课件第9章 Java网络编程.pptx_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、第九章第九章 JAVA JAVA网络编程网络编程本章学习要点本章学习要点 了解常见的网络协议;理解套接字和端口;掌握 InetAddress 类的用法;掌握 ServerSocket 和 Socket 的用法;掌握 DatagramPacket 和 DatagramSocket 类的用法;学会筒单 TCP 程序的编写;学会 UDP 程序的编写;掌握 URL 类和 URLConnection 的用法。9.1 JAVA 9.1 JAVA 网络编程基础知识网络编程基础知识 9.1.1 9.1.1 网络协议网络协议 9.1.2 9.1.2 套接字和端口套接字和端口9.1.1 9.1.1 网络协议网络协

2、议 网络编程的目的就是直接或间接地通过网络协议与其他计算机进行通信。在Java语言中包含网络编程所需要的各种类,编程人员只需要创建这些类的对象,调用相应的方法,就可以进行网络应用程序的编写。网络协议是网络上所有设备(网络服务器、计算机及交换机、路由器、防火墙等)之间通信规则的集合,它规定了通信时信息必须采用的格式和这些格式的意义。目前的网络协议有很多种,在这里简单介绍几种常用的网络协议。9.1.1 9.1.1 网络协议网络协议 IP IP 协议协议 IP 是英文 Internet Protocol(网络之间互联的协议)的缩写,中文简称为网协,也就是为计算机网络相互连接进行通信而设计的协议。在

3、Internet 中它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在 Internet 上进行通信时应当遵守的规则。任何厂家生产的计算机系统只有遵守 IP 协议才可以与 Internet 互联。Internet 网络中采用的协议是 TCP/IP 协议,其全称是 Transmission Control Protocol/Internet Protocol。Internet 依靠 TCP/IP 协议在全球范围内实现不同硬件结构、不同操作系统、不同网络的互联。9.1.1 9.1.1 网络协议网络协议 TCP/IP定义了电子设备如何连入 Internet 以及数据如何在它们之

4、间传输的标准。协议采用4层的层级结构,分别是应用层、传输层、网络层和网络接口层。每一层都呼叫它的下一层所提供的网络来完成自己的需求。TCP 负责发现传输的问题,一有问题就发出信号要求重新传输,直到所有数据安全正确地传输到目的地,而IP是给Internet 的每一台电脑规定一个地址。9.1.1 9.1.1 网络协议网络协议 TCP TCP 与与 UDP UDP 协议协议 在网络通信中TCP协议类似于使用手机打电话,可以保证把信息传递给别人;而UDP协议类似于发短信,接收人有可能接收不到传递的信息。在网络通信中使用TCP的方式需要建立专门的虚拟连接,然后进行可靠的数据连接,如果数据发送失败,客户端

5、会自动重发该数据。而使用UDP方式不需要建立专门的虚拟连接,传输也不是很可靠,如果发送失败则客户端无法获得。TCP协议是一种以固定连线为基础的协议,它提供两台计算机之间可靠的数据传送。而UDP无连接通信协议,它不保证可靠数据的传输,但能够向若干目标发送数据以及接收来自若干源的数据。对于一些重要的数据,一般使用TCP方式来进行数据传输,而大量的非核心数据则通过UDP方式进行传递。使用TCP方式传递的速度稍微慢一点,而且传输时产生的数据量会比UDP大一点。9.1.2 9.1.2 套接字和端口套接字和端口 在网络上很多应用程序都是采用客户端/服务器(C/S)的模式,实现网络通信必须将两台计算机连接起

6、来建立一个双向的通信链路,这个双向通信链路的每一端称之为一个套接字(Socket)。一台服务器上可能提供多种服务,使用IP地址只能唯一定位到某一台计算机,却不能准确地连接到想要连接的服务器。通常使用一个065535的整数来标识该机器上的某个服务,这个整数就是端口号(Port)。端口号并不是指计算机上实际存在的物理位置,而是一种软件上的抽象。9.1.2 9.1.2 套接字和端口套接字和端口 端口号主要分为以下两类:由Internet名字和号码指派公司ICANN分配绐一些常用的应用层程序固定使用的熟知端口,其值是01023。例如HTTP服务一般使用80端口,FTP服务使用21端口。一般端口用来随时

7、分配绐请求通信的客户进程。运行在一台特定机器上的某个服务器(如FTP服务器)都有一个套接字绑定在该服务器上,服务器只是等待和监听客户的连接请求。客户端客户需要知道服务器的主机名和端口号。9.2 JAVA JAVA INETADDRESSINETADDRESS类及其常用方法类及其常用方法 Internet上的主机有两种方式表示地址,分别为域名和IP地址。包中的InetAddress类对象包含一个Internet主机地址的域名和 IP 地址。InetAddress 类提供了操作IP地址的各种方法。该类本身没有构造方法,而是通过调用相关静态方法获取实例。常用方法:方法名称方法名称说明说明boolea

8、n equals(Object obj)boolean equals(Object obj)将此对象与指定对象比较byte getAddress()byte getAddress()返回此 InetAddress 对象的原始 IP 地址static static InetAddressInetAddress getAHByNamegetAHByName(String host)(String host)在给定主机名的情况下,根据系统上配置的名称,服务器返回其 IP 地址所组成的数组static InetAddress getByAddress(byte addr)static InetAddr

9、ess getByAddress(byte addr)在给定原始 IP 地址的情况下,返回 InetAddress 对象9.3 JAVA TCP通信 9.3.1 ServerSocket 类 9.3.2 Socket 类 9.3.3 客户端与服务器端的简单通信客户端与服务器端的简单通信 9.3.4 9.3.4 传输对象数据传输对象数据9.3.1 SERVERSOCKET 类 TCP网络程序是指利用Socket编写的通信程序。利用TCP协议进行通信的两个应用程序是有主次之分的,一个是服务器程序,一个是客户端程序,两者的功能和编写方法不太一样。其中ServerSocket类表示Socket服务器端

10、,Socket类表示Socket客户端,两者之间的交互过程如下:服务器端创建一个ServerSocket(服务器端套接字),调用 accept()方法等待客户端来连接。客户端程序创建一个Socket,请求与服务器建立连接。服务器接收客户的连接请求,同时创建一个新的 Socket 与客户建立连接,服务器继续等待新的请求。9.3.1 SERVERSOCKET 类 ServerSocket类是与Socket类相对应的用于表示通信双方中的服务器端,用于在服务器上开一个端口,被动地等待数据(使用accept()方法)并建立连接进行数据交互。服务器套接字一次可以与一个套接字连接,如果多台客户端同时提出连接

11、请求,服务器套接字会将请求连接的客户端存入队列中,然后从中取出一个套接字与服务器新建的套接字连接起来。若请求连接大于最大容纳数,则多出的连接请求被拒绝;默认的队列大小是50。9.3.1 SERVERSOCKET 类 构造方法:构造方法构造方法说明说明ServerSocketServerSocket()()无参构造方法。ServerSocket(int port)ServerSocket(int port)创建绑定到特定端口的服务器套接字。ServerSocket(int port,int backlog)ServerSocket(int port,int backlog)使用指定的 backl

12、og 创建服务器套接字并将其绑定到指定的本地端口。ServerSocket(int port,int backlog,InetAddress bindAddr)ServerSocket(int port,int backlog,InetAddress bindAddr)使用指定的端口、监听 backlog 和要绑定到本地的 IP 地址创建服务器。9.3.2 SOCKET 类 Socket 类表示通信双方中的客户端,用于呼叫远端机器上的一个端口,主动向服务器端发送数据(当连接建立后也能接收数据)。下面简单介绍一下Socket类的构造方法和常用方法。构造方法:构造方法构造方法说明说明Socket(

13、InetAddress address,int port)Socket(InetAddress address,int port)创建一个流套接字并将其连接到指定 IP 地址的指定端口Soclcet(InetAddress address,int port,InetAddress Soclcet(InetAddress address,int port,InetAddress localAddr,int localPort)localAddr,int localPort)创建一个套接字并将其连接到指定远程地址上的指定远程端口Socket(String Socket(String host,in

14、thost,int port)port)创建一个流套接字并将其连接到指定主机上的指定端口Socket(String host,int port,InetAddress localAddr,int Socket(String host,int port,InetAddress localAddr,int localPort)localPort)创建一个套接字并将其连接到指定远程地址上的指定远程端口。Socket 会通过调用 bind()函数来绑定提供的本地地址及端口9.3.2 SOCKET 类 常用方法方法名方法名说明说明void bind(SocketAddress bindpoint)voi

15、d bind(SocketAddress bindpoint)将套接字绑定到本地地址void close()void close()关闭此套接字void connect(SocketAddress endpoint)void connect(SocketAddress endpoint)将此套接字连接到服务器InetAddress getInetAddress()InetAddress getInetAddress()返回套接字的连接地址InetAddress getLocalAddress()InetAddress getLocalAddress()获取套接字绑定的本地地址InputStre

16、am getInputStream()InputStream getInputStream()返回此套接字的输入流OutputStream getOutputStream()OutputStream getOutputStream()返回此套接字的输出流SocketAddress getLocalSocketAddress()SocketAddress getLocalSocketAddress()返回此套接字绑定的端点地址,如果尚未绑定则返回 nullSocketAddress getRemoteSocketAddress()SocketAddress getRemoteSocketAddr

17、ess()返回此套接字的连接的端点地址,如果尚未连接则返回 nullint getLoacalPort()int getLoacalPort()返回此套接字绑定的本地端口intgetPort()intgetPort()返回此套接字连接的远程端口9.3.3 客户端与服务器端的简单通信客户端与服务器端的简单通信 在了解TCP通信中ServerSocket类和Socket类的简单应用之后,本节将编写一个案例实现客户端向服务器发送信息,服务器读取客户端发送的信息,并将读取的数据写入到数据流中。9.3.4 9.3.4 传输对象数据传输对象数据 经过前面的学习,掌握了如何在服务器开始一个端口监听套接字,以

18、及如何在客户端连接服务器,发送简单的数字。本次案例将实现如何在客户端发送一个对象到服务器端,服务器如何解析对象中的数据。9.4 JAVA UDPJAVA UDP通信通信 9.4.1 DatagramPacketDatagramPacket类类 9.4.2 9.4.2 DatagramSocketDatagramSocket类类9.4.1 DATAGRAMPACKETDATAGRAMPACKET类类 在TCP/IP协议的传输层除了一个TCP协议之外,还有一个UDP协议。UDP协议是用户数据报协议的简称,也用于网络数据的传输。虽然UDP协议是一种不太可靠的协议,但有时在需要较快地接收数据并且可以忍

19、受较小错误的情况下,UDP就会表现出更大的优势。下面是在Java中使用 UDP 协议发送数据的步骤。1.使用 DatagramSocket()创建一个数据包套接字。2.使用 DatagramPacket()创建要发送的数据包。3.使用 DatagramSocket 类的 send()方法发送数据包。9.4.1 DATAGRAMPACKETDATAGRAMPACKET类类 接收 UDP 数据包的步骤如下:1.使用 DatagramSocket 创建数据包套接字,并将其绑定到指定的端口。2.使用 DatagramPacket 创建字节数组来接收数据包。3.使用 DatagramPacket 类的

20、receive()方法接收 UDP 包。9.4.1 DATAGRAMPACKETDATAGRAMPACKET类类 包中的DatagramPacket类用来表示数据报包,数据报包用来实现无连接包投递服务。每条报文仅根据该包中包含的信息从一台机器路由到另一台机器。从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到达。9.4.2 9.4.2 DATAGRAMSOCKETDATAGRAMSOCKET类类 DatagramSocket类用于表示发送和接收数据报包的套接字。数据报包套接字是包投递服务的发送或接收点。每个在数据报包套接字上发送或接收的包都是单独编址和路由的。从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到达。9.5 本章小结本章小结 随着互联网的发展趋势,大量的两络应用程序涌现出来*使得网络编程技术得到了很好的发展。网络编程就是在两个或者两个以上的设备(例如计算机)之间传输数据,编程人员所做的事情就是把数据发送到指定位置或者接收到指定的数据,这就是狭义的网络编程。在Java语言中设计了一些API来专门实现数据发送和接收等功能,只需要编程人员调用即可。要进行网络编程就必须对网络协议、端口和套接字等知识有所了解,本章将从这几方面对网络编程的应用进行筒单介绍。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 大学
版权提示 | 免责声明

1,本文(《Java语言程序设计》课件第9章 Java网络编程.pptx)为本站会员(momomo)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|