基于udp的程序设计Word文档格式.docx

上传人:b****6 文档编号:16829014 上传时间:2022-11-26 格式:DOCX 页数:12 大小:247.02KB
下载 相关 举报
基于udp的程序设计Word文档格式.docx_第1页
第1页 / 共12页
基于udp的程序设计Word文档格式.docx_第2页
第2页 / 共12页
基于udp的程序设计Word文档格式.docx_第3页
第3页 / 共12页
基于udp的程序设计Word文档格式.docx_第4页
第4页 / 共12页
基于udp的程序设计Word文档格式.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

基于udp的程序设计Word文档格式.docx

《基于udp的程序设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于udp的程序设计Word文档格式.docx(12页珍藏版)》请在冰豆网上搜索。

基于udp的程序设计Word文档格式.docx

指导教师签名:

年月日

摘要

UDP是TCP/IP协议族为传输层设计的两个协议之一,它在进程与进程的通信过程中,提供了有限的差错校验功能,是一种无连接的,不可靠的协议。

根据后UDP协议的工作原理,编写程序实现基于UDP的服务器。

以命令行形式运行:

1、UdpServerserve_port其中,UdpServer为程序名,server_port为服务器使用的端口号。

2、输出内容:

服务器与客户端的交互过程,例如:

UDPServerRecceive:

...UDPServerSend:

...

关键词:

UDP;

程序设计

目录

1课题描述2

2设计需求3

3设计过程4

4设计代码6

5总结10

参考文献11

1课题描述

UDP是TCP/IP协议族为传输层设计的两个协议之一,它在进程与进程的通信过程中,提供了有限的差错校验功能,是一种无连接的,不可靠的协议。

UDP在一个较低的水平上完成进程之间的通信,在收到分组的时候没有流量控制机制也没有确认机制,适用于可靠性比较高的局域网。

由于UDP采取了无连接的方式,因此协议简单,在一些特定的应用中协议运行效率高。

UDP适合一些实时的应用,如IP电话,视频会议,它们要求源主机以恒定的速率发送数据,并且在网络出现拥塞时,可以丢失一些数据,但是延迟不能太大。

基于这些特点,流式多媒体通信、多播等应用在传输层采用的就是UDP协议。

因为UDP具有TCP所望尘莫及的速度优势。

虽然TCP协议中植入了各种安全保障功能,但是在实际执行的过程中会占用大量的系统开销,无疑使速度受到严重的影响。

反观UDP由于排除了信息可靠传递机制,将安全和排序等功能移交给上层应用来完成,极大降低了执行时间,使速度得到了保证。

2设计需求

UDP协议是一种无连接的不可靠的传输层协议。

从应用层的角度来看,UDP协议在网络层的IP协议的基础上,向应用层的程序提供不可靠的数据包传输服务。

UDP协议为上面的应用层提供传输服务。

UDP协议主要用于对传输效率要求很高的应用层协议,例如引导协议(BOOTP)网络时间协议(NTP)简单网络管理协议(SNMP)简单的文件传输协议(TFTP)等。

另外,域名服务器(DNS)同时依赖于TCP与UDP协议。

由于UDP协议采用无连接的工作方式,并且只提供有限的差错控制,因此UDP协议简单并且执行效率很高。

UDP协议没有采用基于窗口的流量控制机制,当数据包过多时在接收端可能会出现溢出,接收端无法判断在传输中出现那种错误,应用层还需要提供一定的差错控制功能。

目前,一些实用要求一恒定速率发送数据,并且在网络出现拥塞时可以丢失一些数据,但是不希望数据传输的时延太大,UDP协议正好可以适应这种需求。

基于UDP协议的网络应用也采用客户机/服务器模式。

在这里,客户机与服务器表示互相通信的两个应用程序的进程,它们分别被称为UDP客户机与UDP服务器。

UDP服务器是指提供某种网络服务的应用进程,它通过熟知端口号来向客户提供服务。

(1)C++编程技术

(2)TCP/IP协议技术

在T 

P协议族中,有两个互不相同的传输协议:

P(传输控制协议)和U 

P(用户数据报协议)。

P为两台主机提供高可靠性的数据通信。

它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。

由于运输层提供了高可靠性的端到端的通信,因此应用层可以忽略所有这些细节。

而另一方面, 

P则为应用层提供一种非常简单的服务。

它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。

任何必需的可靠性必须由应用层来提供。

(3)TCP/IP协议与Winsock网络编程接口

Winsock规范不是一种网络协议,而是一套开放的、支持多种协议的Windows写的网络编程接口。

Winsock可以访问很多种网络协议,可以把它当作一种协议的封装。

现在的Winsock已经基本上实现了与协议无关,可以使用Winsock来调用协议的功能

(4)WinsockAPI的使用

下面给出了使用Winsock进行编程时涉及的主要函数:

WSAStartup函数、WSACleanup函数、socket函数、closesocket函数、send函数、recv函数、bind函数、listen函数、accept函数、connect函数

3设计过程

首先编写两个程序分别为客户器与服务器,使得两者建立连接,在客户器中发送命令然后等待服务器提供相应的反映,具体实现如下:

对于UDP服务器端,服务程序首先调用套接口函数socket(),然后调用绑定IP地址和协议端口号函数bind()。

之后调用函数recvfrom()接收客户数据,调用sendto()向客户发送数据。

对于UDP客户端,客户机程序启动后调用套接口函数socket(),然后调用sendto()向服务器发送数据,调用recvfrom()接收服务器数据。

双方数据交换成功后,各自调用关闭套接口函数close()关闭套接口。

UDP套接口通信方式。

具体流程图如下:

客户机一方的工作流程如下:

(1)打开通信信道(申请一个套接字),并连接到服务器在主机的保留端口,该端口对应服务器的UDP进程。

(2)向服务器发出请求报文,等待接收应答。

(3)从服务器方收到最终应答结果,或在不再请求时关闭信道并终止客户机进程。

服务器一方的工作流程如下:

(1)打开通信信道(申请一个套接字),通知本地主机在某一保留端口接收客户机请求。

(2)等待客户机请求到达指定端口。

(3)接收到请求,启动一个新进程处理用户请求,同时释放旧进程以响应新的客户请求,一旦服务完成,关闭新进程与客户的通信链路。

(4)继续等待客户机请求。

(5)如果不想响应客户机请求,关闭服务器进程。

4设计代码

#include<

fstream.h>

iostream.h>

string.h>

time.h>

winsock2.h>

#pragmacomment(lib,"

ws2_32.lib"

voidmain(intargc,char*argv[])

{

//检查输入命令格式

if(argc!

=2)

{

cout<

<

"

pleaseinputcommand:

UdpServerserver_port"

endl;

return;

}

//建立与Socket库绑定

WSADATAWSAData;

if(WSAStartup(MAKEWORD(2,2),&

WSAData)!

=0)

WSAStartuperror!

return;

//创建数据报Socket

SOCKETsock;

sock=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);

if(sock==INVALID_SOCKET)

{

Socketcreateerror!

//初始化本地Socket

sockaddr_inserveraddr;

serveraddr.sin_family=AF_INET;

serveraddr.sin_port=htons((unsignedshort)atoi(argv[1]));

serveraddr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);

intserveraddrlen=sizeof(serveraddr);

//端口与IP地址绑定

intnBind;

nBind=bind(sock,(sockaddr*)&

serveraddr,sizeof(serveraddr));

if(nBind==SOCKET_ERROR)

endl<

Socketbinderror!

//初始化远程Socket

sockaddr_inclientaddr;

intclientaddrlen=sizeof(clientaddr);

while(true)

//设置接收缓冲区

charrecvbuf[20];

memset(recvbuf,'

\0'

sizeof(recvbuf));

//通过端口接收数据

intnRecv;

nRecv=recvfrom(sock,recvbuf,sizeof(recvbuf),0,(sockaddr*)&

clientaddr,&

clientaddrlen);

if(nRecv==SOCKET_ERROR)

{

cout<

Socketreceiveerror!

return;

}

UDPServerReceive:

"

recvbuf<

//设置发送缓冲区

charsendbuf[1500];

memset(sendbuf,'

sizeof(sendbuf));

//判断命令类型

if(strcmp(recvbuf,"

getfile"

)==0){

fstreaminfile;

infile.open("

input"

ios:

:

in|ios:

nocreate);

infile.seekg(0,ios:

end);

intnlength=infile.tellg();

beg);

infile.read(sendbuf,nlength);

//通过端口发送数据

intnSend;

nSend=sendto(sock,sendbuf,strlen(sendbuf),0,(sockaddr*)&

clientaddr,clientaddrlen);

if(nSend==SOCKET_ERROR){

Socketsenderror!

gettime"

//获得当前系统时间

time_tCurTime;

time(&

CurTime);

strftime(sendbuf,sizeof(sendbuf),"

%Y-%m-%d%H%M:

%S"

localtime(&

CurTime));

//通过端口发送数据

intnSend;

nSend=sendto(sock,sendbuf,sizeof(sendbuf),0,(sockaddr*)&

if(nSend==SOCKET_ERROR){

cout<

Socketsenderror"

return;

}

udpserversned"

send<

nRecv=recvfrom(sock,recvbuf,sizeof(recvbuf),0,(sockaddr*)&

if(nRecv==SOCKET_ERROR){

socketreceiveerror!

commandok"

)!

=0){

closesocket(sock);

WSACleanup();

}

5总结

我们这组的课题是UDP服务器设计,其主要研究内容在于实现文件的传输及接收。

我们首先是了解UDP的定义,即确定UDP究竟是个什么协议,它有些什么性质和特征,它应用于那些方面。

经过了解知道了UDP是TCP/IP协议族为传输层设计的两个协议之一,它在进程与进程的通信过程中,提供了有限的差错校验功能,是一种无连接的、不可靠的协议。

分析后知道了UDP其实就是用来实现网络中文件的传输和接收的协议。

知道它的实质后,接下来我们就开始思考具体的UDP实现的程序,该程序分为客户端和服务器端两部分,客户端主要是执行文件或消息的发送,服务器端则主要是接收这些内容。

整个程序最重要也是最有难度的部分就是如何把发送和接收两部分联系在一起,经过查阅了一些资料,我们终于攻克了这个难题,这样我们就把程序的功能充分的实现出来了。

同时在编写MFC下的服务器和客户端时,要注意安全处理种种联接请求和断开请求。

而且这次的课程设计过程中,我们接触到了全新的编程方法-Winsock,使我们学到了新知识。

参考文献

[1]谢希仁.计算机网络(第6版)[M].北京:

电子工业出版社,2013

[3]钱能.C++程序设计教程[M].北京:

清华大学出版社,2003目录

第一章总论1

一、项目概况1

二、项目提出的理由与过程6

三、项目建设的必要性8

四、项目的可行性12

第二章市场预测15

一、市场分析15

二、市场预测16

三、产品市场竞争力分析19

第三章建设规模与产品方案22

一、建设规模22

二、产品方案22

三、质量标准22

第四章项目建设地点25

一、项目建设地点选择25

二、项目建设地条件25

第五章技术方案、设备方案和工程方案28

一、技术方案28

二、产品特点30

三、主要设备方案32

四、工程方案32

第六章原材料与原料供应35

一、原料来源及运输方式35

二、燃料供应与运输方式35

第七章总图布置、运输、总体布局与公用辅助工程37

一、总图布置37

二、运输38

三、总体布局38

四、公用辅助工程39

第八章节能、节水与安全措施44

一、主要依据及标准44

二、节能44

三、节水45

四、消防与安全45

第九章环境影响与评价47

一、法规依据47

二、项目建设对环境影响48

三、环境保护措施48

四、环境影响评价49

第十章项目组织管理与运行50

一、项目建设期管理50

二、项目运行期组织管理52

第十一章项目实施进度55

第十二章投资估算和资金筹措56

一、投资估算56

二、资金筹措58

第十三章财务评价与效益分析61

一、项目财务评价61

二、财务评价结论65

三、社会效益68

四、生态效益68

第十四章风险分析70

一、主要风险分析识别70

二、风险程度分析及防范风险的措施70

第十五章招标方案72

一、招标范围72

二、招标组织形式72

三、招标方式72

第十六章结论与建议74

一、可行性研究结论74

二、建议75

附件77

一、附表77

二、附件77

三、附图77

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 其它考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1