基于TCPIP协议的SocketJAVA编程

上传人:汽*** 文档编号:487860606 上传时间:2023-03-05 格式:DOC 页数:16 大小:70KB
返回 下载 相关 举报
基于TCPIP协议的SocketJAVA编程_第1页
第1页 / 共16页
基于TCPIP协议的SocketJAVA编程_第2页
第2页 / 共16页
基于TCPIP协议的SocketJAVA编程_第3页
第3页 / 共16页
基于TCPIP协议的SocketJAVA编程_第4页
第4页 / 共16页
基于TCPIP协议的SocketJAVA编程_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《基于TCPIP协议的SocketJAVA编程》由会员分享,可在线阅读,更多相关《基于TCPIP协议的SocketJAVA编程(16页珍藏版)》请在金锄头文库上搜索。

1、基于TCP/IP协议的SocketJAVA编程基于TCP/IP协议的Socket编程1 TCP/IP协议2 套接字(Socket)2.1 Client/Server模式2.2 套接字(Socket)概念3 Socket类和ServerSocket类3.1 Socket类3.2 ServerSocket类4 Socket编程应用举例4.1 Socket编程的基本步骤4.2单客户/服务器Socket编程应用举例4.3多客户/服务器Socket编程应用举例本章小结1 TCP/IP协议nTCP/IP协议(传输控制协议/网际协议)是一种网络通信协议,是一种面向连接的可靠的传输协议。它规了网络上的所有通信

2、设备,尤其是一个主机与另一个主机之间的数据传输格式以与传送方式。TCP/IP是Internet的基础协议。nTCP/IP协议的基本传输单位是数据包(datagram)。TCP协议负责把数据分成若干个datagram,并给每个datagram加上;IP在每个上再加上接收端主机地址,以确定数据传输的目的地。如果传输过程中出现数据丢失或数据失真等异常情况,TCP协议会自动要求数据重发,并重新分包。TCP保证数据传输的质量,IP协议保证数据的传输。nTCP/IP协议数据的传输是基于TCP/IP模型的4层结构:应用层、传输层、网络层和网络接口层。在TCP/IP协议组中两种主要协议n1、传输层协议n有两个

3、主要的传输层协议:传输控制协议(TCP)和用户数据报协议(UDP)。n(1)传输控制协议(TCP)nTCP传输数据建立在面向连接的基础上,实现了一种“虚电路”的概念。双方通信之前,先建立连接,然后双方即可在其上发送数据流,发送完毕后再关闭连接。这种数据交换方式的优点是效率高,缺点是建立连接和关闭连接需要额外的开销。(1)TCP协议主要提供以下服务:1. n可靠的数据传输2. n面向连接的虚电路3. n缓冲的传输4. n重新排序5. n多路复用技术6. n高效的、全双工传输7. n流量控制nTCP协议提供的是一种可靠的数据流服务。得到的是一个顺序的无差错的数据流。(2)用户数据报协议(UDP)。

4、UDP是比TCP简单得多的协议,是对IP协议组的扩充。n由于大多数网络应用程序都在同一台机器上运行,计算机上必须能够确保目的地址机器上的软件程序能从源地址机器处获得数据包,以与源计算机能收到正确的回复。这是通过使用UDP 的“端口号”完成的。源端口号标识了请求域名服务的本地计算机的应用程序,同时需要将所有由目的主机生成的响应包都指定到源主机的这个端口上。(3)UDP与TCP比较n与TCP不同,UDP提供的是面向无连接、“不可靠”的数据报服务。它不提供对IP 协议的可靠机制、流控制以与错误恢复功能等。由于UDP比较简单,比TCP负载消耗少。主要用于不需要TCP排序和流量控制能力而是自己完成这些功

5、能的应用程序。2、应用层协议n在应用层中定义了许多高层协议:n(1)TELNET(远程终端访问)。TELNET连接是一个TCP连接。允许一台计算机上的用户登录到远程计算机上并进行交互。支持终端到终端的连接与进程到进程分布式计算的通信。n(2)FTP(文件传输协议)nFTP使得主机间可以共享文件。FTP使用TCP生成一个虚拟连接用于控制信息,然后再生成一个单独的TCP连接用于数据传输。FTP主要提供文件共享、支持间接使用远程计算机、使用户不因各类主机文件存储器系统的差异而受影响、可靠且有效的传输数据等功能。n(3)SMTP(简单传输协议)nSMTP支持在因特网上传递电子,用于可靠且有效的数据传输

6、。它保证把各种类型的电子通过这一协议从一台服务器发送到另一台服务器上。n(4)DNS(域名服务)nDNS提供域名到IP地址的转换,允许对域名资源进行分散管理。n(5) (超文本传输协议)n是Web浏览器和Web服务器之间通信的标准协议。它指明客户端如何与服务器建立连接,客户端如何从服务器请求数据,服务器如何响应请求,最后连接如何关闭等。 连接是一个TCP连接。nTCP/IP模型中还有其他一些协议,如地址解析协议(ARP)、因特网控制消息协议(ICMP)等。2 套接字(Socket)n套接字允许程序员把网络连接当成一个流(Stream),并向这个流读写字节。Socket对程序员掩盖了网络的低层细

7、节,如纠错、包大小、包重传、网络地址等。本节将介绍Client/Server模式、套接字(Socket)概念。2.1 Client/Server模式n计算机网络最重要的3个功能是数据通信、资源共享和分布处理。为了满足这些功能需求,计算机网络产生了两种重要的应用模式:客户端/服务器(Client/Server,C/S)模式和浏览器/服务器(Brower/Server,B/S)模式。采用何种应用模式在编程实现时非常重要。下面将主要介绍C/S模式。n在C/S模式下,客户向服务器发出服务请求,服务器接收到请求后,提供相应的服务。其工作方式可通过现实生活中一个例子来说明。在一个酒店中,顾客向服务员点菜,

8、服务员把点菜单通知厨师,厨师按点菜单做好菜后让服务员端给顾客,这就是一种C/S工作方式。如果把酒店看作一个系统,服务员就是客户端,厨师就是服务器,这种系统分工和协同工作的方式就是C/S的工作模式。n由此可见,工作在C/S模式下的系统被分成两大部分:n(1)客户端部分:为每个用户所专有的,负责执行前台功能。n(2)服务器部分:由多个用户共享的信息与功能,招待后台服务。C/S模式建立的基础nC/S模式的建立基于以下两点:一是建立网络的起因是网络中软硬件资源、运算能力和信息不均等,需要共享,从而造就拥有众多资源的主机提供服务,资源较少的客户请求服务这一非对等作用。n二是网间进程通信完全是异步的,相互

9、通信的进程既不存在父子关系,又不共享存缓冲区,因此需要一种机制为希望通信的进程建立联系,为二者的数据交换提供同步,这就是基于C/S的TCP/IP。图1 基于C/S模式系统结构C/S模式在操作过程中采取“请求/响应”的工作模式。当用户需要访问服务器资源时由客户端发出请求,服务器接收到请求后做出响应,然后执行相应的服务,把执行结果返回到客户端,再由客户端作一定处理后返回给用户。执行过程如下:n(1)服务器侦听相应端口的请求;n(2)客户端发出一个请求;n(3)服务器接收到此请求;n(4)服务器处理这个请求,并把处理结果返回给客户端。n从上面所描述的过程可知:客户与服务器进程的作用是非对称的,因此编

10、码不同。服务进程一般是先于客户请求而启动的。只要系统运行,该服务进程一直存在,直到正常或强迫终止。2.2 套接字(Socket)概念n数据在Internet中是以有限大小的分组的形式传输的。一个分组是一个数据报,包括首部和负载。首部包含目的的地址和端口、源地址和端口以与用于保证可靠传输的各种其他管理信息。负载包含数据本身。n但由于分组长度有限,通常必须将数据分解为多个分组,在目的地再重新组合。在传输过程中,有可能发生一个或多个分组丢失或被破坏的情况,此时就需要重传分组。或者分组乱序到达,则需要重新排序。这些工作将是非常繁重的。幸运的是,套接字(Socket)的出现使我们不必关心这些事情,我们只

11、需要把网络看成一个流,就象对文件操作一样对这个流进行操作就行了。套接字(Socket)是网络协议传输层提供的接口。Socket是两个程序之间进行双向数据传输的网络通讯端点,有一个地址和一个端口号来标识。每个服务程序在提供服务时都要在一个端口进行,而想使用该服务的客户机也必须连接该端口。图2 基于Socket的点对点通信目前共有两种套接字1. n流套接字提供一个面向连接的、可靠的数据传输服务,保证数据无差错、无重复、按顺序发送。具有流量控制功能。数据被看作字节流,无长度限制。TCP即是一种基于流套接字的通信协议。2. n数据报套接字提供一个面向无连接的数据传输服务,不保证数据传输是可靠的、有序的

12、、无重复的。UDP即是一种基于数据报套接字的通信协议。n本章主要介绍基于TCP/IP协议的C/S模式下的Socket编程。图3 基于TCP/IP的Socket通信模式在该种模式下,Socket可以看成是在两个程序进行通信连接中的一个端点,一个程序将一段信息写入Socket中,该Socket将这段信息发送到另外一个Socket中,使这段信息能传送到其他程序。每一个基于TCP/IP的程序都赋予了一个端口号(065535),通过不同的端口号,区别服务器上运行的每一个应用程序和所提供的服务。n值得注意的是,习惯上将低于1024的端口号保留给系统服务使用。n在两个网络应用程序发送和接收信息时都需建立一个

13、可靠的连接,流套接字依靠TCP来保证信息正确到达目的地。实际上,IP分组有可能在网络中丢失或者在传送过程中发生错误。当任何一种情况发生时,作为接收方的TCP将请求发送方TCP重发这个IP分组。因此,两个流套接字之间建立的连接是可靠的连接。Socket可进行的基本操作n(1)连接远程主机n(2)发送数据n(3)接收数据n(4)关闭连接n(5)绑定端口n(6)侦听入站数据n(7)在所绑定端口上接收远程主要的连接利用Socket编程的一般步骤:(1)分别为服务器和客户端创建Socket对象,建立Socket连接。n(2)打开连接到Socket的输入输出流。Socket对象包含两个流:一个是输入流,表

14、示流入的数据流,其作用是接收数据;一个是输出流,表示流出的数据流,其作用是向外发送数据,其流操作与I/O流相同。(3)按照一定的协议对Socket进行读/写操作,在本章里是基于TCP/IP协议;(4)读/写操作完毕后,关闭Socket连接。3 Socket类和ServerSocket类n在Java语言中,服务器端Socket使用ServerSocket类,客户端Socket使用Socket类,由此来区别服务器端和客户端。3.1 Socket类 .Socket类是Java用来实现客户端TCP操作的基础类,在Java编程中一切与TCP有关的操作包括连接的建立、传输、连接关闭与Socket选项的设置

15、都由Socket类负责,这个类本身使用直接代码通过主机操作系统的本地TCP栈进行通信。Socket类的输入输出都是通过流来实现的。Socket类常用方法如下:1Socket类的构造函数n(1)public Socket(String host,int port) throws UnknownHostException, IOExceptionn功能:在客户端以指定的服务器host和端口号port创建一个Socket对象,并向服务器发出连接请求。n参数:host:服务器主机名。port:端口号。n若域名服务器无法解析该服务器名或域名服务器没有运行,此时host无法可知,则抛出UnknownHostException异常;若生成Socket时发生I/O错误则抛出IOException异常。n(2)public Socket(InetAddress address,int port) throws IOExceptionn功能:在客户端以指定的服务器地址address和端口号port创建一个Socket对象,并向服务器发出连接请求。n参数:address:服务器IP地址。port:端口号。n若生成Socket

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号