UDP服务器设计_第1页
UDP服务器设计_第2页
UDP服务器设计_第3页
UDP服务器设计_第4页
UDP服务器设计_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机网络课程设计集中上机实验报告学 生:学 号:班 级:专 业:重庆邮电大学移通学院2014年12月目录一. 课程设计的目的和意义1.1课程设计的目的1.2课程设计的意义二. 课程设计题目和要求 2.1 UDP服务器的设计2.2 UDP服务器设计的要求2.3 UDP服务器的设计原理三. 详细设计 错误!未定义书签。3.1需求分析3.2相关设计3.3程序流程3.4客户机一方的工作流程3.5服务器一方的工作流程四. 代码及注解4.1客户端程序代码4.2服务器端程序五. 程序运行结果分析5.1 WINDOW下的测试运行情况 11六. 课程设计小结七. 参考书目课程设计的目的和意义1.1 课程设计的

2、目的目的:设计一个基于UDP勺服务器1.2 课程设计的意义意义:UDP是 TCP/IP协议族为传输层设计的两个协议之一,它在进程与 进程的通信过程中,提供了有限的差错校验功能,是一种无连接的,不可靠 的协议。UDP在一个较低的水平上完成进程之间的通信,在收到分组的时候 没有流量控制机制也没有确认机制, 适用于可靠性比较高的局域网。 由于 UDP 采取了无连接的方式, 因此协议简单, 在一些特定的应用中协议运行效率高。 UDP适合一些实时的应用,如IP电话,视频会议,它们要求源主机以恒定的 速率发送数据,并且在网络出现拥塞时,可以丢失一些数据,但是延迟不能 太大。基于这些特点, 流式多媒体通信、

3、 多播等应用在传输层采用的就是 UDP 协议。因为UDP具有TCP所望尘莫及的速度优势。虽然 TCP协议中植入了各种 安全保障功能,但是在实际执行的过程中会占用大量的系统开销,无疑使速 度受到严重的影响。反观UDP由于排除了信息可靠传递机制,将安全和排序 等功能移交给上层应用来完成,极大降低了执行时间,使速度得到了保证。课程设计题目和要求2.1 UDP 服务器的设计UDP是 TCfy IP协议族为传输层设计的两个协议之一,是一种 无连接的,不可靠的协议。由于 UDP采取了无连接的方式,因此 协议简单,在一些特定的应用中协议运行效率高。UDP适合一些实 时的应用,如 IP 电话、视频会议,它们要

4、求源主机以恒定的速率 发送数据,并且在网络出现拥塞时,可以丢失一些数据,但是延 迟不能太大。基于这些特点,流式多媒体通信、多播等应用在传 输层采用的就是UDP*议。编写UDPK务器程序,流畅地完成视 频文件地传输,要能对多个客户端进行管理。需要通过UDP模拟多个客户端连接验证的情况。2.2 UDP 服务器设计的要求编写程序,设计UDP服务器。因为考虑到实时性,所以选择 UDP为主要的网络通信技术。(1) 程序能流畅地完成信息内容的传输和接收。(2) 要能对多个客服端进行管理。需要通过 UDP莫拟多个客服 端连接验证的情况。(3) 操作系统、使用语言和编译环境不限,但在作业中必须注 明。2.3

5、UDP 服务器的设计原理UDP是一个无连接协议,传输数据之前源端和终端不建立连 接,当它想传送时就简单地去抓取来自应用程序的数据,并尽 可能快地把它扔到网络上。在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、 计算机的能力和传输带宽的 限制;在接收端,UDP把每个消息段放在队列中,应用程序每 次从队列中读一个消息段。(1) C+编程技术C+是在C语言的基础上开发的一种集面向对象编程、泛型编 程和过程化编程于一体的编程语言 1 。应用较为广泛,是一种 静态数据类型检查的,支持多重编程的通用程序设计语言。它支 持过程化程序设计,数据抽象,面向对象设计,制作图标等多种 程序设计风格。(

6、2) TCP/IP 协议技术在T?C?P?/?I?P协议族中,有两个互不相同的传输协议:?T?C?P(传输控制协议)和U?D?P(用户数据报协议)。T?C?P为两台主 机提供高可靠性的数据通信。它所做的工作包括把应用程序交给 它的数据分成合适的小块交给下面的网络层,确认接收到的分组, 设置发送最后确认分组的超时时钟等。由于运输层提供了高可靠 性的端到端的通信,因此应用层可以忽略所有这些细节。而另一 方面,?U?D?P则为应用层提供一种非常简单的服务。它只是把称 作数据报的分组从一台主机发送到另一台主机,但并不保证该数 据报能到达另一端。任何必需的可靠性必须由应用层来提供。(3) TCP/IP

7、协议与 Winsock 网络编程接口Winsock 规范不是一种网络协议,而是一套开放的、支持多种协议的Win dows写的网络编程接口。Win sock可以访问很多种网络 协议,可以把它当作一种协议的封装。现在的 Winsock 已经基本 上实现了与协议无关,可以使用 Win sock来调用协议的功能(4) Winsock API 的使用下面给出了使用 Win sock进行编程时涉及的主要函数:WSAStartup 函数、WSACIeanup函数、socket 函数、closesocket 函数、 send 函数、 recv 函数、 bind 函数、 listen 函数、 accept 函数

8、、 connect 函数详细设计3.1 需求分析随着信息化的全面建设和普及中, 服务器的角色举足轻重, 它 为计算机提供网络和技术的服务,也是整个网络系统的核心部分, 中小企业的建设会有很多波折和阻碍,前期是资金问题,在服务 器方面秉着少花钱多办事,高回报的原则。对于服务器方面能省 则省,对于设置专门的技术人员维护服务器的企业也是屈指可数 的,所以一般会选择服务器租用服务和服务器代维服务,这对于 服务器方面的开支就在可控成本之内了。价格低廉,服务器有了 稳定保障,这也是目前很多中小企业的普遍做法。其次就是在挑选服务器方面, 根据企业的实际业务, 明确规划 服务器租用方向是很有必要的,随着业务量

9、的不断上升,调整服 务器的配置,从而保证资金和服务器得到充分利用。目前企业级的服务器大致有文件服务器,数据库服务器,邮件服务器,web服务器,多媒体服务器,终端服务器等类型。这些服务器是根据企 业的不同业务设置的。UDP月艮务器是采用UDP协议的一类服务器的统称。UDP不 属于连接型协议,因而具有资源消耗小,处理速度快的优点,所 以通常音频、视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。 比如我们聊天用的ICQ和QC就是使用的UDP协议。所以根据企业的发展方向和业务要求, 合理的搭配是很有必要 的。3.2 相关设计设计UDP服务器的过程如

10、下所示。首先,创建又一个 Socket 并监听。然后启动线程接收数据。 用一个链表保存所有连上的客户,并通知连接成功。这样,客户 就有机会处理这一事件并作一些动作。最后,当客户断开时,向 服务器发送一个事件,服务器就可以做一些收尾工作。其中最关键的部分是收发部分和数据处理部分。3.3程序流程服务器客户机图2.1服务器工作流程3.4 客户机一方的工作流程(1) 打开通信信道 ( 申请一个套接字 ) ,并连接到服务器在主机的保 留端口,该端口对应服务器的 UDP进程。(2) 向服务器发出请求报文,等待接收应答。(3) 从服务器方收到最终应答结果,或在不再请求时关闭信道并终 止客户机进程。3.5 服

11、务器一方的工作流程(1) 打开通信信道 ( 申请一个套接字 ) ,通知本地主机在某一保留端 口接收客户机请求。(2) 等待客户机请求到达指定端口。(3) 接收到请求,启动一个新进程处理用户请求,同时释放旧进程 以响应新的客户请求,一旦服务完成,关闭新进程与客户的通 信链路。(4) 继续等待客户机请求。(5) 如果不想响应客户机请求,关闭服务器进程。四 代码及注解4.1 客户端程序代码#include #include #pragma comment(lib, WS2_32) / 链接到 WS2_32.libBOOL InitWinsock(); / 初始化 winsockvoid main()

12、SOCKET socket1; / 定义套接字InitWinsock(); / 初始化 winsockstruct sockaddr_in server; / 定义结构体 int len =sizeof(server);/ 定义结构体的长度server.sin_family=AF_INET; /server 的地址族 server.sin_port=htons(1000);/server 的监听端口/server 的地址 socket1=socket(AF_INET,SOCK_DGRAM,0); / 给套接字赋值 while (1) / 使可以循环输入char buffer1024=0;/ 定

13、义缓冲区printf(input messagen); / 提示输入 scanf(%s,buffer); / 输入 if (strcmp(buffer,bye)=0)/ 比较字符串break;if (sendto(socket1,buffer,sizeof buffer,0,(struct sockaddr*)&server,len)!=SOCKET_ERROR) / 发送数据if (recvfrom(socket1,buffer,sizeof buffer,0,(struct sockaddr*)&server,&len)!=SOCKET_ERROR) / 接受数据printf(rece f

14、rom server:%sn,buffer);closesocket(socket1); / 关闭套接字BOOL InitWinsock()int Error;WORD VersionRequested;/ 版本号WSADATA WsaData;VersionRequested=MAKEWORD(2,2);/ 版本 2 的套接字 Error=WSAStartup(VersionRequested,&WsaData); / 启 动WinSock2if(Error!=0)return FALSE; / 加载套接字库 失败则返回elseif(LOBYTE(WsaData.wVersion)!=2|H

15、IBYTE(WsaData.wHighV ersion)!=2) / 判断版本WSACleanup(); / 解除绑定并释放空间return FALSE;return TRUE;/ 如果不是版本 2 则退出4.2 服务器端程序#include #include #pragma comment(lib, WS2_32) / 链接到 WS2_32.libBOOL InitWinsock();void main()SOCKET socket1;/ 定义套接字InitWinsock();struct sockaddr_in local;struct sockaddr_in from;int froml

16、en =sizeof(from);local.sin_family=AF_INET;local.sin_port=htons(1000);/ 监听端口local.sin_addr.s_addr=INADDR_ANY;/ 本机socket1=socket(AF_INET,SOCK_DGRAM,0); bind(socket1,(struct sockaddr*)&local,sizeof local);while (1)char buffer1024=0;printf(waiting for message fromothersn);if (recvfrom(socket1,buffer,siz

17、eofbuffer,0,(struct sockaddr*)&from,&fromlen)!=SOCKET_ERROR) printf(Received datagram from %s-%sn,inet_ntoa(from.sin_addr),buffer);/ 给 cilent 发信息 sendto(socket1,buffer,sizeof buffer,0,(struct sockaddr*)&from,fromlen); Sleep(500); closesocket(socket1); BOOL InitWinsock()int Error;WORD VersionRequeste

18、d; WSADATA WsaData; VersionRequested=MAKEWORD(2,2);Error=WSAStartup(VersionRequested,&WsaData); / 启 动 WinSock2if(Error!=0) return FALSE; elseif(LOBYTE(WsaData.wVersion)!=2|HIBYTE(WsaData.wHighV ersion)!=2) WSACleanup(); return FALSE;return TRUE;五 程序运行结果分析5.1 Windows 下的测试运行情况图 1:查询 IP 地址a) 将 IP 地址为的计算机作为客户端的结果图 2 :客户端发送信息b) 服务器接受信息的情况图 3 :服务器接受信息的状况六 课程设计小结我们这组的课题是UDP服务器设计,其主要研究内容在于实现 文件的传输及接收。我们首先是了解 UDP的定义,即确定UDP究 竟是个什么协议,它有些什么性质和特征,它应用于那些方面。 经过了解知道了 UDP是 TCP/IP协议族为传输层

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论