udp服务器设计

上传人:小** 文档编号:90939354 上传时间:2019-06-20 格式:DOC 页数:16 大小:153.52KB
返回 下载 相关 举报
udp服务器设计_第1页
第1页 / 共16页
udp服务器设计_第2页
第2页 / 共16页
udp服务器设计_第3页
第3页 / 共16页
udp服务器设计_第4页
第4页 / 共16页
udp服务器设计_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《udp服务器设计》由会员分享,可在线阅读,更多相关《udp服务器设计(16页珍藏版)》请在金锄头文库上搜索。

1、计算机网络课程设计计算机网络课程设计 集中上机实验报告集中上机实验报告 学 生: 学 号: 班 级: 专 业: 重庆邮电大学移通学院 2014 年 12 月 1 目录目录 一课程设计的目的和意义 1 1.1 课程设计的目的 .1 1.2 课程设计的意义 .1 二课程设计题目和要求 2 2.1 UDP 服务器的设计 .2 2.2 UDP 服务器设计的要求 .2 2.3 UDP 服务器的设计原理 .3 三详细设计 4 3.1 需求分析 .4 3.2 相关设计 .5 3.3 程序流程 .6 3.4 客户机一方的工作流程 .7 3.5 服务器一方的工作流程 .7 四代码及注解 7 4.1 客户端程序代

2、码 .7 4.2 服务器端程序 .9 五程序运行结果分析 .11 5.1 WINDOWS 下的测试运行情况 11 六课程设计小结 .13 七参考书目 .14 1 一一 课程设计的目的和意义课程设计的目的和意义 1.11.1 课程设计的目的课程设计的目的 目的:设计一个基于 UDP 的服务器 1.21.2 课程设计的意义课程设计的意义 意义:UDP 是 TCP/IP 协议族为传输层设计的两个协议之一,它在进程与 进程的通信过程中,提供了有限的差错校验功能,是一种无连接的,不可靠 的协议。UDP 在一个较低的水平上完成进程之间的通信,在收到分组的时候 没有流量控制机制也没有确认机制,适用于可靠性比

3、较高的局域网。由于 UDP 采取了无连接的方式,因此协议简单,在一些特定的应用中协议运行效 率高。UDP 适合一些实时的应用,如 IP 电话,视频会议,它们要求源主机以 恒定的速率发送数据,并且在网络出现拥塞时,可以丢失一些数据,但是延 迟不能太大。基于这些特点,流式多媒体通信、多播等应用在传输层采用的 就是 UDP 协议。 因为 UDP 具有 TCP 所望尘莫及的速度优势。虽然 TCP 协议中植入了各种 安全保障功能,但是在实际执行的过程中会占用大量的系统开销,无疑使速 度受到严重的影响。反观 UDP 由于排除了信息可靠传递机制,将安全和排序 等功能移交给上层应用来完成,极大降低了执行时间,

4、使速度得到了保证。 2 二二 课程设计题目和要求课程设计题目和要求 2.12.1 UDPUDP 服务器的设计服务器的设计 UDP 是 TCPIP 协议族为传输层设计的两个协议之一,是一 种无连接的,不可靠的协议。由于 UDP 采取了无连接的方式,因 此协议简单,在一些特定的应用中协议运行效率高。UDP 适合一 些实时的应用,如 IP 电话、视频会议,它们要求源主机以恒定 的速率发送数据,并且在网络出现拥塞时,可以丢失一些数据, 但是延迟不能太大。基于这些特点,流式多媒体通信、多播等应 用在传输层采用的就是 UDP 协议。 编写 UDP 服务器程序,流畅 地完成视频文件地传输,要能对多个客户端进

5、行管理。需要通过 UDP 模拟多个客户端连接验证的情况。 2.22.2 UDPUDP 服务器设计的要求服务器设计的要求 编写程序,设计 UDP 服务器。因为考虑到实时性,所以选择 UDP 为主要的网络通信技术。 (1)程序能流畅地完成信息内容的传输和接收。 (2)要能对多个客服端进行管理。需要通过 UDP 模拟多个客 服端连接验证的情况。 (3)操作系统、使用语言和编译环境不限,但在作业中必须 注明。 3 2.32.3 UDPUDP 服务器的设计原理服务器的设计原理 UDP 是一个无连接协议,传输数据之前源端和终端不建立连 接,当它想传送时就简单地去抓取来自应用程序的数据,并尽 可能快地把它扔

6、到网络上。在发送端, UDP 传送数据的速度仅 仅是受应用程序生成数据的速度、计算机的能力和传输带宽的 限制;在接收端, UDP 把每个消息段放在队列中,应用程序每 次从队列中读一个消息段。 (1)C+编程技术 C+是在 C 语言的基础上开发的一种集面向对象编程、泛型编 程和过程化编程于一体的编程语言1 。应用较为广泛,是一种 静态数据类型检查的,支持多重编程的通用程序设计语言。它支 持过程化程序设计,数据抽象,面向对象设计,制作图标等多种 程序设计风格。 (2)TCP/IP 协议技术 在 T C P / I P 协议族中,有两个互不相同的传输协议: T C P(传输控制协议)和 U D P(

7、用户数据报协议) 。T C P 为 两台主机提供高可靠性的数据通信。它所做的工作包括把应用程 序交给它的数据分成合适的小块交给下面的网络层,确认接收到 的分组,设置发送最后确认分组的超时时钟等。由于运输层提供 了高可靠性的端到端的通信,因此应用层可以忽略所有这些细节。 而另一方面, U D P 则为应用层提供一种非常简单的服务。它只 是把称作数据报的分组从一台主机发送到另一台主机,但并不保 证该数据报能到达另一端。任何必需的可靠性必须由应用层来提 供。 4 (3)TCP/IP 协议与 Winsock 网络编程接口 Winsock 规范不是一种网络协议,而是一套开放的、支持多种 协议的 Wind

8、ows 写的网络编程接口。Winsock 可以访问很多种网 络协议,可以把它当作一种协议的封装。现在的 Winsock 已经基 本上实现了与协议无关,可以使用 Winsock 来调用协议的功能 (4)Winsock API 的使用 下面给出了使用 Winsock 进行编程时涉及的主要函数: WSAStartup 函数、WSACleanup 函数、socket 函数、 closesocket 函数、send 函数、recv 函数、bind 函数、listen 函数、accept 函数、connect 函数 三三 详细设计详细设计 3.13.1 需求分析需求分析 随着信息化的全面建设和普及中,服务

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

10、器大致有文件服务器,数据库服务器,邮件服务器, web 服务器,多媒体服务器,终端服务器等类型。这些服务器是 根据企业的不同业务设置的。 UDP 服务器是采用 UDP 协议的一类服务器的统称。UDP 不 属于连接型协议,因而具有资源消耗小,处理速度快的优点,所 以通常音频、视频和普通数据在传送时使用 UDP 较多,因为它们 即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。 比如我们聊天用的 ICQ 和 QQ 就是使用的 UDP 协议。 所以根据企业的发展方向和业务要求,合理的搭配是很有必 要的。 3.3.2 2 相关设计相关设计 设计 UDP 服务器的过程如下所示。 首先,创建又一个

11、Socket 并监听。然后启动线程接收数据。 用一个链表保存所有连上的客户,并通知连接成功。这样,客户 就有机会处理这一事件并作一些动作。最后,当客户断开时,向 服务器发送一个事件,服务器就可以做一些收尾工作。 其中最关键的部分是收发部分和数据处理部分。 6 3.33.3 程序流程程序流程 图 2.1 服务器工作流程 Bind() Socket() Readfrom() 等待客户请求 处理服务请求 Sendto() Close() Socket() Bind() Sendto() Readfrom() Close() 服务请求 服务应答 服务器 客户机 7 3.43.4 客户机一方的工作流程客

12、户机一方的工作流程 (1)打开通信信道(申请一个套接字),并连接到服务器在主机的 保留端口,该端口对应服务器的 UDP 进程。 (2)向服务器发出请求报文,等待接收应答。 (3)从服务器方收到最终应答结果,或在不再请求时关闭信道并 终止客户机进程。 3.53.5 服务器一方的工作流程服务器一方的工作流程 (1)打开通信信道(申请一个套接字),通知本地主机在某一保留 端口接收客户机请求。 (2)等待客户机请求到达指定端口。 (3)接收到请求,启动一个新进程处理用户请求,同时释放旧进 程以响应新的客户请求,一旦服务完成,关闭新进程与客户 的通信链路。 (4)继续等待客户机请求。 (5)如果不想响应

13、客户机请求,关闭服务器进程。 四四 代码及注解代码及注解 4.14.1 客户端程序客户端程序代码代码 #include #include 8 #pragma comment(lib, “WS2_32“) / 链接到 WS2_32.lib BOOL InitWinsock();/初始化 winsock void main() SOCKET socket1; /定义套接字 InitWinsock();/初始化 winsock struct sockaddr_in server; /定义结构体 int len =sizeof(server); /定义结构体的长度 server.sin_family=

14、AF_INET; /server 的地址族 server.sin_port=htons(1000); /server 的监听端口 server.sin_addr.s_addr=inet_addr(“172.16.93.187“); /server 的地址 socket1=socket(AF_INET,SOCK_DGRAM,0); /给套接字赋值 while (1) /使可以循环输入 char buffer1024=“0“; /定义缓冲区 printf(“input messagen“); / 提示输入 scanf(“%s“,buffer); /输入 if (strcmp(buffer,“bye

15、“)=0) /比较字符串 break; if (sendto(socket1,buffer,sizeof buffer,0,(struct sockaddr*) closesocket(socket1); /关闭套接字 BOOL InitWinsock() int Error; WORD VersionRequested;/版本号 9 WSADATA WsaData; VersionRequested=MAKEWORD(2,2); /版本 2 的套接字 Error=WSAStartup(VersionRequested, /启动 WinSock2 if(Error!=0) return FAL

16、SE; /加载套接字库 失败则返回 else if(LOBYTE(WsaData.wVersion)!=2|HIBYTE(WsaData.wHighV ersion)!=2) /判断版本 WSACleanup(); /解除绑定并释放空间 return FALSE; return TRUE; /如果不是版本 2 则退出 4.24.2 服务器端程序服务器端程序 #include #include #pragma comment(lib, “WS2_32“) / 链接到 WS2_32.lib BOOL InitWinsock(); void main() SOCKET socket1;/定义套接字 InitWinsock(); struct sockaddr_in local; struct sockaddr_in from; int fromlen =

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

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