首页 计算机网络与通信论文-UDP服务器设计(可编辑)

计算机网络与通信论文-UDP服务器设计(可编辑)

举报
开通vip

计算机网络与通信论文-UDP服务器设计(可编辑)计算机网络与通信论文-UDP服务器设计(可编辑) 目录 UDP服务器设计 2 摘要 2 Abstract 2 一、绪论 3 二、UDP服务器的设计目标与要求 4 三、UDP服务器的设计思路 5 3.1设计相关技术 5 3.1.1 UDP协议技术 5 3.2.2 C++编程技术 5 3.3.3 TCP/IP协议技术 5 3.3.4 TCP/IP协议与Winsock网络编程接口 5 3.3.5 Winsock API的使用 6 3.2设计思路 6 3.3服务器的主要工作流程 6 四、UDP服务器的...

计算机网络与通信论文-UDP服务器设计(可编辑)
计算机网络与通信论文-UDP服务器设计(可编辑) 目录 UDP服务器设计 2 摘要 2 Abstract 2 一、绪论 3 二、UDP服务器的设计目标与要求 4 三、UDP服务器的设计思路 5 3.1设计相关技术 5 3.1.1 UDP 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 技术 5 3.2.2 C++编程技术 5 3.3.3 TCP/IP协议技术 5 3.3.4 TCP/IP协议与Winsock网络编程接口 5 3.3.5 Winsock API的使用 6 3.2设计思路 6 3.3服务器的主要工作流程 6 四、UDP服务器的实现 7 4.1主要功能模块 7 4.4.1发送 7 4.4.2接收 8 4.4.3数据处理部分 9 4.2程序处理模块 10 4.2.1客户端程序 10 4.2.2服务器端程序 12 五、程序运行结果 13 六、 总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf 16 参考文献 17 UDP服务器设计 UDP server design 武汉理工大学信息工程学院信研1206 陈维熙 1XXXXXXXXXX64 摘要 本文介绍了UDP服务器的设计,分别设计了服务器端和客户端。运用C++技 术编程来实现UDP服务器的功能。 关键字:UDP 服务器 C++ Abstract This paper describes the design of the UDP server, were designed for the server and client. Using C + + programming UDP server. Keywords:UDP;Server;C++ 一、绪论 UDP是TCP/IP协议族为传输层设计的两个协议之一,它在进程与进程的通信过程中,提供了有限的差错校验功能,是一种无连接的,不可靠的协议。UDP在一个较低的水平上完成进程之间的通信,在收到分组的时候没有流量控制机制也没有确认机制,适用于可靠性比较高的局域网。由于UDP采取了无连接的方式,因此协议简单,在一些特定的应用中协议运行效率高。UDP适合一些实时的应用,如IP电话,视频会议,它们要求源主机以恒定的速率发送数据,并且在网络出现拥塞时,可以丢失一些数据,但是延迟不能太大。基于这些特点,流式多媒体通信、多播等应用在传输层采用的就是UDP协议。 因为UDP具有TCP所望尘莫及的速度优势。虽然TCP协议中植入了各种安全保障功能,但是在实际执行的过程中会占用大量的系统开销,无疑使速度受到严重的影响。反观UDP由于排除了信息可靠传递机制,将安全和排序等功能移交给上层应用来完成,极大降低了执行时间,使速度得到了保证。 UDP是一个无连接协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。C++这个词在中国大陆的程序员圈子中通常被读做“C加加”,而西方的程序员通常读做“C plus plus”,“CPP”。 它是一种使用非常广泛的计算机编程语言。C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、制作图标等等泛型程序设计等多种程序设计风格。 在T?C?P?/?I?P协议族中,有两个互不相同的传输协议:?T?C?P(传输控制协议)和U?D?P(用户数据报协议)。T?C?P为两台主机提供高可靠性的数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高可靠性的端到端的通信,因此应用层可以忽略所有这些细节。而另一方面,?U?D?P则为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。任何必需的可靠性必须由应用层来提供 客户机一方的工作流程如下: 1.打开通信信道 申请一个套接字 ,并连接到服务器在主机的保留端口,该端口对应服务器的UDP进程。 2.向服务器发出请求报文,等待接收应答。 3.从服务器方收到最终应答结果,或在不再请求时关闭信道并终止客户机进程。 服务器一方的工作流程如下: 1.打开通信信道 申请一个套接字 , 通知 关于发布提成方案的通知关于xx通知关于成立公司筹建组的通知关于红头文件的使用公开通知关于计发全勤奖的通知 本地主机在某一保留端口接收客户机请求。 2.等待客户机请求到达指定端口。 3.接收到请求,启动一个新进程处理用户请求,同时释放旧进程以响应新的客户请求,一旦服务完成,关闭新进程与客户的通信链路。 4.继续等待客户机请求。 如果不想响应客户机请求,关闭服务器进程。 四、UDP服务器的实现 4.1主要功能模块 4.4.1发送 BOOL CUdpSock::SendBuffer char *buff,DWORD dwBufsize,struct sockaddr FAR *lpTo m_lock.Lock ; WSABUF wsabuf; WSAOVERLAPPED over; DWORD dwrecv; DWORD dwFlags 0; DWORD dwRet; BOOL fPending; int nRet; //建立 WSABUF和WSAOVERLAPPED 两个结构体 fPending FALSE; nRet WSASendTo m_Socket, &wsabuf, 1, &dwRecv, IpTo, sizeof sockaddr , &over, NULL ; if nRet! 0 // 检测 工程第三方检测合同工程防雷检测合同植筋拉拔检测方案传感器技术课后答案检测机构通用要求培训 是否是因为传输未完成而造成的错误 else //否则给出出错信息 //如果是I/O未完成 if fPending //等待完成请求或结束事件 dwRet WaitForSingleObject over.hEvent,60000 ; //判断是否是接收方发出的信号 if dwRet WAIT_TIMEOUT CloseHandle over.hEvent ; TRACE "WAIT_TIMEOUT发送失败\n",NULL ; return FALSE; if dwRet! WAIT_OBJECT_0 CloseHandle over.hEvent ; TRACE "发送失败\n",NULL ; return FALSE; //查看I/O信息 if !WSAGetOverlappedResult m_socket, &over, &dwRecv, FALSE, &dwFlags //结束句柄会话,返回失败信息 //结束句柄会话,返回成功信息 4.4.2接收 BOOL CUdpSock::RecvRequest LPBYTE pBuf,DWORD dwBufSize,struct sockaddr FAR *lpFrom //清空接收缓冲区 memset pBuf,0,dwBufSize ; //建立 WSABUF和WSAOVERLAPPED 两个 结构体 wsabuf.buf char * pBuf; wsabuf.len dwBufSize; memset &over,0,sizeof WSAOVERLAPPED ; over.hEvent m_hEventSock; dwFlags 0; fPending FALSE; int sizeAddr sizeof sockaddr_in ; nRet WSARecvFrom m_Socket, &wsabuf, 1, &dwRecv, &dwFlags, lpFrom, &sizeAddr, &over, NULL ; if nRet! 0 //判断传输是否正常完成 //如果完成 if fPending //等待结束请求或退出事件 4.4.3数据处理部分 BOOL CUdpSock::DelWithResData struct sockaddr FAR *lpFrom //接收数据的处理 return TRUE; //数据的处理部分 void CUdpSock::OnRead m_translate 0; sockaddr_in addrfro; memset &addrfro,0,sizeof sockaddr_in ; addrfro.sin._family AF_INET; //如果没有接收请求就返回到读信息函数 if !RecvRequest LPBYTE m_wsaInBuffer.buf, sizeof m_byInBuffer , sockaddr* &addrfro TRACE "CClientOverlappedSock::OnRead\n" ; return; //如果m_translate不为0,则向m_SimpleIOBuffer缓冲区写信息 if m_translate m_SimpleIOBuffer.Write m_wsaInBuffer.buf,m_translate ; try //处理收到的信息 DelWithResData sockaddr* &addrfro ; catch ... TRACE "Udp DelWithResData erro!\n" ; memset &m_PackHead,0,sizeof PackHead ; m_bFillHead FALSE; m_SimpleIOBuffer.Notify ; return; 4.2程序处理模块 4.2.1客户端程序 #include #include #pragma comment lib, "WS2_32" // 链接到WS2_32.lib BOOL InitWinsock ; void main SOCKET socket1; InitWinsock ; struct sockaddr_in server; int len sizeof server ; server.sin_family AF_INET; server.sin_port htons 1000 ; ///server的 监听端口 server.sin_addr.s_addr inet_addr "172.16.201.186" ; ///server 的地址 socket1 socket AF_INET,SOCK_DGRAM,0 ; while 1 char buffer[1024] "\0"; printf "input message\n" ; 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 from server:%s\n",buffer ; closesocket socket1 ; BOOL InitWinsock int Error; WORD VersionRequested; WSADATA WsaData; VersionRequested MAKEWORD 2,2 ; Error WSAStartup VersionRequested,&WsaData ; //启动WinSock2 if Error! 0 return FALSE; else if LOBYTE WsaData.wVersion ! 2||HIBYTE WsaData.wHighVersion ! 2 WSACleanup ; return FALSE; return TRUE; 4.2.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 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 buffer[1024] "\0"; printf "waiting for message from others-------------\n" ; if recvfrom socket1,buffer,sizeof buffer,0, struct sockaddr* &from,&fromlen ! SOCKET_ERROR printf "Received datagram from %s--%s\n",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 VersionRequested; WSADATA WsaData; VersionRequested MAKEWORD 2,2 ; Error WSAStartup VersionRequested,&WsaData ; //启动WinSock2 if Error! 0 return FALSE; else if LOBYTE WsaData.wVersion ! 2||HIBYTE WsaData.wHighVersion ! 2 WSACleanup ; return FALSE; return TRUE; 五、程序运行结果 (1)将IP地址为192.168.0.4的本机作为客户端的结果 图5.1 本机作为客户端的发送 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 图5.2本机作为客户端时服务器接收情况 (2)将IP地址为192.168.0.4的计算机作为客户端的结果 图5.3局域网内其他主机作为客户端的发送内容 图5.4局域网内其他主机作为客户端时服务器接收情况 六、总结 通过本次计算机与网络的课程设计,我对网络协议有了更深入的认识与了解。尤其是UDP协议。UDP协议的全称是用户数据包协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层――传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UDP用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。 参考文献 【1】James F.Kurose, Keith W.Ross, 陈鸣译, 计算机网络―自顶向下方 法 第四版 , 机械工业出版社, 2009.1 【2】Larry L. Peterson;Bruce S. Davie, 薛静锋等译, 计算机网络―系 统方法 第四版 , 机械工业出版社, 2009.2 【3】李峰, 陈向益, TCP\IP协议分析与应用编程, 人民邮电出版社, 2008.8 【4】Shivendra S.Panwar, etc, 陈涓译, TCP\IP基础教程 基于实验的方 法 ,人民邮电出版社, 2006.12 【5】吴功宜等. 计算机网络课程设计. 机械工业出版社. 2005.9 Bind Socket Readfrom 等待客户请求 处理服务请求 Sendto Close Socket Bind Sendto Readfrom Close 服务请求 服务应答 服务器 客户机 图 3.1 服务器工作流程 1
本文档为【计算机网络与通信论文-UDP服务器设计(可编辑)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_554469
暂无简介~
格式:doc
大小:32KB
软件:Word
页数:0
分类:初中语文
上传时间:2017-10-06
浏览量:25