- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java实用教程(第3版) 第13章 Java网络编程 13.1 网络程序设计基础 13.2 TCP网络编程 13.3 UDP网络编程 13.4 URL 13.5 综合实例 13.1 网络程序设计基础 13.1.1 TCP和UDP 要想让处于网络中的主机互相通信,只是知道通信双方地址还是不够的,还必须遵循一定的规则。有两套参考模型:OSI参考模型,TCP/IP参考模型(或TCP/IP协议)。由于OSI参考模型过于理想化,未能在因特网上进行广泛推广。这样,TCP/IP协议就成为事实上的国际标准。这里只重点介绍TCP/IP协议的运输层协议。运输层协议中有两个非常重要的协议:传输控制协议TCP(Transmission Control Protocol),用户数据报协议UDP(User Datagram Protocol)。 传输控制协议TCP是面向连接的运输层协议。即应用进程(或程序)在使用TCP协议之前,必须先建立TCP连接,在传输完毕后,释放已经建立的连接。利用TCP协议进行通信的两个应用进程,一个是服务器进程。另一个是客户进程。 用户数据报协议UDP是面向无连接的运输层协议。即应用进程(或程序)在使用UDP协议之前,不必先建立连接。自然,发送数据结束时也没有连接需要释放。因此,减少了开销和发送数据之前的时延。 13.1.2 端口和套接字 一般情况下,两台主机上都会运行许多进程。当主机A上的进程A1向主机B上的进程B1发送数据时,IP协议根据主机B的IP地址,把进程A1发送的数据送达主机B。接下来传输层TCP需要决定把数据发送到主机中的哪个进程。TCP和UDP都采用端口来区分进程。 端口是一种抽象的软件结构(包括一些数据结构和I/O缓冲区),也称为协议端口(protocol port)。端口用一个整数型标识符来表示,即端口号。端口号跟协议相关,TCP/IP传输层的两个协议TCP和UDP是完全独立的两个软件模块,因此各自的端口号也相互独立,端口使用一个16位的数字来表示,它的范围是0~65535,1024以下的端口号保留给预定义的服务,用于一些知名的网络服务和应用。例如,http使用80端口,FTP服务的端口号是21。应用程序通过系统调用与某端口建立连接(binding)后,传输层传给该端口的数据都被相应的进程所接收,相应进程发给传输层的数据都通过该端口输出。 13.2 TCP网络编程 两个Java应用程序可通过一个双向的网络通信连接实现数据交换,这个双向链路的一段称为一个Socket (套接字)。Socket通常用来实现Client/Server连接。Socket的出现,使程序员可以很方便地访问TCP/IP,从而开发各种网络应用程序。 Java语言的基于套接字编程分为服务器编程和客户端编程,其通信模型如图13.1所示。 图13.1 基于TCP的Socket通信 13.2 TCP网络编程 服务器程序编写: (1) 调用ServerSocket(int port)创建一个服务器端套接字,并绑定到指定端口上。 (2) 调用accept(),监听连接请求,如果客户端请求连接,则接受连接,返回通信套接字。 (3) 调用Socket类的getOutputStream和getInputStream获取输出流和输入流,开始网络数据的发送和接收。 (4) 最后关闭通信套接字。 客户端程序编写: (1) 调用Socket()创建一个流套接字,并请求连接到服务器端。 (2) 调用Socket类的getOutputStream和getInputStream获取输出流和输入流,开始网络数据的发送和接收。 (3) 最后关闭通信套接字。 13.2 TCP网络编程 Socket类的对象表示一个Socket。客户端使用Socket类的构造方法,创建一个Socket对象,创建的同时会自动向服务器方发起连接。 Socket类的构造方法如下: Socket(String host,int port)throws UnknownHostException,IOException: 功能:向服务器(域名是host。端口号为port)发起TCP连接,若成功,则创建Socket对象,否则抛出异常。 Socket(InetAddress address,int port)throws IOException: 功能:同上。只是根据InetAddress对象所表示的IP地址以及端口号port发起连接。 Socket(String host,int port,InetAddress localAddr,int localPort)throws IOException: 功能:创建一个套接字并将其连接到指定远程主机上的指定远程端口。Socket 会通过 调
原创力文档


文档评论(0)