- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第20 网络编程
北京源智天下科技有限公司 联系方式: 简单来看,网络编程的目标就是计算机之间相互通讯数据。Java SDK提供了一系列API来完成这些工作,例如Socket。对于程序员来说,这些API被存放在这个包里面,因此只要导入这个包就可以进行网络编程。 20.1.1 TCP/IP协议 现在的Internet或Intranet大部分都是使用TCP/IP协议进行网络通信的,实际上TCP/IP协议是一组以TCP与IP协议为基础的相关协议的集合。 注意:该协议并不完全符合OSI的七层参考模型,而是采用的4层结构。 IP协议是TCP/IP协议族的核心,也是互连网络层中最重要的协议。其接收由更低层发来的数据包,并将该数据包发送到更高层,即TCP或UDP层;此外IP层也可以将从TCP或UDP层接收来的数据包传送到更低层。IP是面向无连接的数据报传送,所以IP协议将报文传送到目的主机后,无论传送正确与否都不进行检验、不会送确认以及不保证分组的正确顺序。 TCP协议位于传输层,其提供面向有连接的数据包传送服务,保证数据包能够被正确传送与接收,包括内容的校验与包的顺序,损坏的包可以被重传。要注意的是,由于提供的是有保证的数据传送服务,因此传送效率要比没有保证的服务低,一般适合工作在广域网中,对网络状况非常好的局域网不是很合算。当然,是否采用TCP也取决于具体的应用需求。 20.1.2 网络编程模型 对于网络编程来说,目前主要有两种编程模型,分别是C/S结构和B/S结构。C/S结构是指客户机/服务器结构。所谓客户机/服务器结构,指的是在客户端需要安装客户端软件,由客户端软件负责与服务器端的数据通讯,将任务合理分配到客户端和服务器端来实现,降低了网络的负载开销。 B/S结构是指浏览器/服务器结构。客户端只需要安装有网页浏览器,不需要安装客户端软件,大部分逻辑事务处理在服务器端完成,客户端浏览器只完成少量的事务处理,减少了客户端的计算机负载,减轻了系统维护与升级的成本和工作量。在JAVA这样的跨平台语言出现之后,B/S架构管理软件更是方便、快捷、高效。 20.1.3 网络传输协议 在前面已经讲解了TCP协议的知识,网络传输协议除了TCP协议外,还有UDP协议。UDP(User Datagram Protocol)是用户数据报协议的英文缩写,UDP是不可靠的无连接数据报服务,它不需要像TCP那样建立连接,它有点类似电报的形式,直接发送,而不管接收端是否收到了数据,所以效率高,发送时速度快,但是不可靠。 UDP是一种无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址。UDP数据包在网络上传往目的地的路径是未知的,因此能否到达目的地,到达目的地的时间以及内容是否正确都是不能确定的。使用UDP无需要建立发送方和接收方的连接。而TCP协议,由于它是一个面向连接的协议,在socket之间进行数据传输之前首先要建立连接,所以在利用TCP协议传输的过程中增加了连接建立的时间。 使用UDP传输数据时是有大小限制的,每个被传输的数据报必须限定在64KB之内。而TCP没有这方面的限制,一旦连接建立起来,双方的Socket就可以按统一的格式传输大量的数据。再次需要强调的是,UDP是一个不可靠的协议,发送方所发送的数据报并不一定以相同的次序到达接收方。而TCP是一个可靠的协议,它确保接收方完全正确地获取发送方所发送的全部数据。 提示:网络编程的目的是指通过网络协议与其他计算机进行通信。网络编程中主要有两个的问题:一是如何准确地定位网络上一台或多台主机,二是如何找到主机后可靠高效地进行数据传输 20.1.4 端口和套接字 端口被规定为一个在0~65535之间的整数。Http服务一般使用80端口,Ftp使用的是21端口,那么客户必须通过80端口才能连接到服务器的Http服务,而通过21端口,才能连接到服务器的Ftp服务器上。 在所有的端口中1~1023之间已经被系统所占用了,因此在定义自己的端口时,不能使用这一段的端口号,而应该使用1024~65535之间的任意端口号,以免发生端口冲突。 网络程序中的套接字用来将应用程序与端口连接起来,套接字是一个软件实现,也是一个假想的装置。在Java中,将套接字抽象化为类,所以程序只需创建Socket类的对象,就可以使用套接字。那么Java是如何实现数据传递的呢?答案是使用Socket的流对象进行数据传输,Sokcet类中有输入和输出流。使用Socket进行的通信都称为Socket通信。将编写的Socket类,用在Socket通信程序中,这就称为Socket网络程序设计。 20.2 基于TCP/IP协议的网络编程 通过前面一节的介绍,读者已经对网络编程基础的知识有了一个简单的介绍。本节将继续向读者介绍如何利用Java进行基
原创力文档


文档评论(0)