TCPIP课程设计---基于套接字的客户机服务器程序设计.docVIP

  • 96
  • 0
  • 约8.24千字
  • 约 15页
  • 2018-10-09 发布于重庆
  • 举报

TCPIP课程设计---基于套接字的客户机服务器程序设计.doc

TCPIP课程设计---基于套接字的客户机服务器程序设计

成 绩 评 阅 人 评阅日期 TCP/IP课程设计 设计题目:基于套接字的客户机/服务器程序设计 班 级: 学 号: 姓 名: 指导老师: 年 月 日 基于套接字的客户机/服务器程序设计 一.设计目的: 理解客户机/服务器模型的工作原理; 掌握套接字的概念; 掌握基于套接字的面向连接和无连接客户机/服务器程序的设计原理和相关的WinSock API函数; 掌握基于TCP和UDP的程序设计方法。 二.设计内容: 基于TCP的应用编程:编写一个Client/Server程序对,服务器程序负责接收客户机进程的连接请求,并在服务器进程与客户机进程之间建立通信连接,然后接收客户机进程的传送数据并将其显示在服务器端,同时将欢迎信息发送给客户机进程,最后关闭该客户机进程的连接;客户机进程首先提出对指定服务器的连接请求,建立连接后向服务器进程发送已经建立连接的数据信息,同时接收服务器进程发送过来的数据并显示在客户端。采用WinSock API实现代码。 基于UDP的应用编程:实现一个基于UDP的客户机/服务器程序,通过设定不同的命令行参数来确定应用进程的不同角色,即充当客户机进程还是服务器进程。当两个进程运行后,彼此之间可以轮流发送消息,对方接收后显示出来。 三.原理分析: (一)套接字的概念: 套接字(Socket) 1. Socket的出现,使得程序员可以很方便的访问TCP/IP,从而开发各种网络应用的程序 2. 套接字存在于通信区域中,通信区域也叫地址族,他是一个抽象的概念,主要用于通过套接字通信的进程的共有特性综合在一起。套接字通常只与同一个区域的套接字交换数据。 套接字的类型 1. 流式套接字(SOCK_STREAM) 提供面向连接的,可靠的数据传输服务,数据无差错,无重复的发送,且按发送的顺序接收,基于TCP协议 ; 2. 数据保式套接字(SOCK_DGRAM) 提供无连接的服务,数据包以独立包形式发送,不提供无错误的保证,数据可能丢失或重复,且接收顺序混乱,基于UDP协议。 (二)WinSock应用程序接口: WinSock是一个基于套接字模型的API(应用程序接口),在Microsoft Windows操作系统类中使用。它在Berkekley接口函数的基础上,还增加了基于消息驱动机制的Windows扩展函数。其中WinSock 1.1只支持TCP/IP网络,WinSock2.0则增加了对更多协议的支持。WinSock包括以下3类的函数: 1.WinSock API包含的Berkeley Socket函数。这类函数分两部分,其一是用于网络I/P的函数;其二是不涉及网络I/O,在本地端完成的函数。 2.检索有关域名,通信服务和协议等Internet信息的数据库函数。 3.Berkekley Socket API的Windows转用的扩展函数。 (三)工作模型 网络应用程序一般是以客户机/服务器的模型的方式工作的。而因特网便是客户机/服务器模型的一个典型应用。在这种工作方式中,一个服务器程序通常事先启动,并在一个熟知端口侦听对服务器的请求,如FTP服务器,Web服务器等。当客户机应用程序需要某种服务时,需向提供这种服务的服务器发出请求,服务器在接收到请求后,向客户机发出相应请求信息。这样客户机应用程序和服务器程序之间便建立了通信连接,此后可以进行数据通信。通信任务完成后需要关闭它们之间的通信连接。基于TCP(面向连接)和基于UDP(面向非连接)应用程序的工作流程如下所示: 通信连接关闭通信连接建立服务器响应请求客户程序请求服务器启动监听 通信连接关闭 通信连接建立 服务器响应请求 客户程序请求 服务器启动监听 数据通信 数据通信 四.总体设计: (一)基于TCP(面向连接)的Socket编程: 服务器端顺序: 1. 加载套接字库 2. 创建套接字(socket) 3. 将套接字绑定到一个本地地址和端口上(bind) 4. 将套接字设为监听模式,准备接收客户请求(listen) 5. 等待客户请求的到来;当请求带来后,接受连接请求,返回一个新的对应于此次连接的套接字(accept) 6. 用返回的套接字和客户端进行通信(send/recv) 7. 返回,等待另一个客户请求 8. 关闭套接字(closesocket) 客户端程序: 1. 加载套接字库 2. 创建套接字(socket) 3. 向服务器发送连接请求(connect) 4. 和服务器端进行通信(send/receive) 5. 关闭套接字(closesocket) (二)基于UDP(面向无连接)的socket编程 : 服务器端(接收端)程序: 1. 加载套接字库 2. 创建套接字(socke

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档