Java(网络编程).ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:57 大小:275KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

Java(网络编程).ppt

Java(网络编程).ppt

预览

免费试读已结束,剩余 47 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第11章网络编程11.1网络编程的基本概念TCP/IP协议概述应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。网络接口层:对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、SerialLine等)来传送数据。下面简单介绍TCP/IP中的几个主要协议的功能。1.IP协议网际协议IP是TCP/IP的心脏,也是网络层中最重要的协议。IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层——TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。2.TCP协议TCP是TranferControlProtocol的简称,是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向“上”传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。TCP是可靠的、面向连接的、连续的、流的协议。当应用程序需要一个可靠的、点对点的连接进行通信时,就用TCP协议。像HTTP、FTP、Telnet等应用程序都需要一个可靠的通信媒介。数据在网络上发送和接收的次序对于能否成功的应用HTTP读取URL资源是很重要的,数据的接收次序与发送的次序必须一样,否则就会收到一些错误的信息。对于许多应用程序来说,这种可靠性的保证是能否成功传输信息的关键。然而,这种可靠的传输方式并非对所有的应用程序都适合。事实上,TCP需要花费大量的时间和带宽来保证可靠传输,有一些场合可靠传输并不是必须的。3.UDP协议UDP是UserDatagramProtocol(用户数据报协议)的简称,是一种无连接的、不可靠的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的。但是这个协议的速度却比较快,所以在现在网络基础设施越来越好的情况下,使用UDP协议的应用程序也越来越多了。在Java的java.net类库中,URL、URLConnection、Socket、SocketServer类都是利用TCP在网络上通信的;而DatagramPacket和DatagramServer类是使用UDP的。本章将主要讲述利用TCP协议进行通信的各个类。Socket套接字端口在面向连接的通信中,一个应用程序与另一个应用程序的连接的建立是通过把一个端口号绑定在套接字上实现的。这样就把应用程序注册在操作系统中,从指定的端口接收所有的数据。运行在同一台计算机上的两个应用程序不可能绑定在同一个端口上,如果应用程序试图绑定在一个已经在使用中的端口上将导致失败。在面向消息的通信中,数据报包含了目的地的端口号。TCP和UDP协议是利用端口把流入的数据映射到运行的计算机上的特定进程。端口号是从0到65535(因为端口是用16位二进制数表示),其中0~1023的端口号被系统保留,它们被许多知名的服务占据,如HTTP、FTP和其他的系统服务,应用程序不能绑定这些端口。URLJava语言提供了类java.net.URL来实现利用URL进行网络编程。该类具有4个构造器及其相应的方法。利用构造器创建了URL对象后,Java提供了2种方式来读取网络数据,一种是通过URL对象及相关方法直接得到相关的网络信息,首先创建一个URL对象,然后使用URL的方法openStream()与指定的URL建立连接并得到一个输入流InputStream类的对象,在此基础上可进一步生成其它的输入流对象实例,进而对信息进行操作;这种方法简单直接,但缺乏灵活性,并且只能够读信息,因为许多Web提供了双向对话的功能,因而就限制了这种方法的应用。另一种是通过方法openConnection()生成相应的URLConnection对象,从而得到InputStream输入流或InputStream对象,进而对