- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
TCP程序设计(c语言课程设计)
第十章
TCP协议,即传输控制协议(Transport Control Protocol),是一种面向连接的、可靠的传输层协议。TCP协议是为了在主机实现高可性包交换的传输协议,在计算机网络中用途很广泛。本章将通过C程序语言编程来实现一个基于TCP协议的程序,旨在向读者介绍TCP的实现原理,并进一步向读者介绍C语言网络编程技术。关于TCP的原理知识,读者可参见第2章。
10.1 设计目的
本章通过C 语言编程实现了一个TCP程序——包括服务器端程序和客户端程序,程序能实现基本的通信。通过本程序向读者展示了TCP的服务器端和客户端的操作流程,用以加深读者对TCP原理的理解。本章的部分知识点在前面章节也有所涉及,读者可以由此加深印象。
通过本章的学习,读者应该对以下知识点有一定的了解:Winsock版本的设置、Winsock库的加载以及Winsock错误号的获取;套接字的创建和关闭;TCP服务器的操作流程、客户端的操作流程;套接字的绑定、侦听、连接和接收操作;数据报的发送和接收;根据地址获取主机、根据主机名获取IP地址等信息;线程饿创建和参书设置;字符串比较函数的使用等。
读者可以在本章的基础上加以拓展,深刻理解TCP原理,掌握TCP编程方法和技巧,开发出自己的TCP程序。
10.2 功能描述
本章用C语言实现了基于TCP的服务器端和客户端程序,能实现基本的TCP通信。其主要的功能包括如下。
服务器端能以默认选项(服务器端IP地址或主机名、端口号)启动,提供服务功能。
服务器端能根据用户指定的选项(服务器端IP地址或主机名、端口号)启动,提供服务和功能。
服务器以错误选项启动时,会提示错误信息,并终止程序。
客户端能连接到服务器端,发送消息到服务器端,同时也能接收来自服务器的响应。
客户端不能连接到服务器端时,能输出错误信息。
客户端以错误选项启动时,会提示错误信息,并终止程序。
10.3总体设计
10.3.1 功能模块设计
个功能模块图
本程序由两大部分组成,包括服务器端和客户端,如图10.1所示。服务器端包含的模块有初始模块、循环控制模块和服务模块;客户端包含的模块有初始化模块、功能控制模块和数据传输控制模块。
服务器端
初始化模块用于初始化各个全局变量赋初始值。初始化Winsock,加载Winsock库。
功能模块控制。该模块为其他模块提供调用的函数,包括参数获取功能、用户帮助功能和错误输出功能 。
循环控制模块。该模块用于控制服务器端的服务次数,如果服务次数超过指定的值则停止服务器。
服务模块。该模块为客户端提供服务功能,包括接收来自客户端的数据,并发送数据到客户端。
客户端
初始化模块。该模块用于初始化客户端的Winsock,加载Winsock库。
功能模块控制。与服务器端一样,该模块提供了参数获取、用户帮助和错误输出功能。
数据传输控制模块。该模块控制着整个客户端的数据传输,包括数据发送和接收等。
图 10.1 功能模块图
服务器端系统流程图
服务器端系统流程图10.2所示。程序首先调用GetArgments()函数获取用户提供的先项,如果没有提供选项,则直接使用默认值,如果有选项提供并成功获取(选项错误则显示用户帮助并终止程序),则初始化变量和Winsock,并创建TCP流套接字;然后解析主机名(如果选项提供的是IP地址 ,或者使用是默认值)或者IP地址(如果选项提供的是主机名),解析成功后则设置服务器地址的各个参数,包括地址、IP地址和端口号;接下来将创建的TCP流套接字和设定的服务器地址绑定(调用bing()函数);绑定成功后,则开始侦听客户的连接,调用循环控制函数LoopControl()函数和Service()函数作接收客户端的连接,接收数据、发送数据等操作;当服务数达到最多的服务次数时,并提示错误信息(调用ErrorPrint()函数实现)。
否
是
否 是
否 是
否 是
否
是`
图10.2 服务器端系统流程图
客户端系统流程图
客户端系统流程图如图10.3所示。客户端程序执行时必须带选项,程序首先判断用户提供的参数个数,如果参数不等于3个,则比表明用户没有提供正确的选项,退出程序;如果参数等于3个,则调用GetArgments()函数获取用户提高的选项,如果获取的选项错误则显示用户帮助并终止程序,如果选项正确则开始创建TCP流套接字,成功创建TCP流套接字后则作和服务器类似的操作,即解析主机名或IP地址、设置服务器端地址;然后进行连接服务器操作,若能成功连接则输出连接信息,并发送消息到服务器端;然后
文档评论(0)