- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
9.1 UDP网络程序设计模型 9.1.1 UDP程序工作流程 根据前面介绍的知识我们知道,TCP协议是基于数据流形式进行数据传输的,而UDP协议是基于数据报模式进行数据传输的。它的通信双方是不需要建立连接的,对于一些速度要求较高可靠性要求不高的网络应用程序来说,数据报通信是一个非常好的选择 。 数据报是网络层数据单元在介质上传输信息的一种逻辑分组格式,它是一种在网络中传播的、独立的、自身包含地址和端口号信息的消息,它能否到达目的地、到达的时间、到达时内容是否会变化不能准确地知道。 无连接的数据报(SOCK_DGRAM)传输服务在传输层使用UDP协议,与面向连接的通信过程不同,它的最大特点是不需要在客户和服务器之间先建立连接。通信的任何一方可以先发送数据,这样首先发送数据的一方就成了客户端,而接收数据的一方就是服务器端。在数据传输完成后,只要关闭套接口释放网络资源,通信过程就结束了。 9.1 UDP网络程序设计模型 9.1.1 UDP程序工作流程 无连接的数据报传输服务通信时,客户端与服务器端所使用的函数是类似的。其工作流程如下: ? 第一步:使用WSAStartup()函数检查系统协议栈的安装情况。常用格式为: WSAStartup(0x0202,wsaData); WSAStartup(MAKEWORD(2,2),wsaData); ? 第二步:使用socket()或WSASocket()函数创建套接口,以确定了相关五元组的协议。常用格式有如下几种: 9.1 UDP网络程序设计模型 9.1.1 UDP程序工作流程 SOCKET s=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP); SOCKET s=socket(AF_INET,SOCK_DGRAM,0); SOCKET s=WSASocket(AF_INET,SOCK_DGRAM,IPPROTO_TCP,NULL,0,WSA_FLAG_OVERLAPPED); SOCKET s=WSASocket(AF_INET,SOCK_DGRAM,0,NULL,0,WSA_FLAG_OVERLAPPED); 9.1 UDP网络程序设计模型 9.1.1 UDP程序工作流程 ? 第三步:使用bind()函数将创建的套接口与本地地址绑定。它确定了相关五元组中的本地IP地址和端口号。 常用格式:bind(s,(const struct sockaddr*)localaddr,sizeof(sockaddr)); ? 第四步:使用sendto()或WSASendTo()函数发送数据,也可使用recvfrom()或WSARecvFrom()函数接收数据。 ? 第五步:使用closesocket()函数关闭套接口。 ? 第六步:最后调用WSACleanup()函数,结束Windows Sockets API的使用。 至此,一次无连接的数据报传输过程结束。 9.1 UDP网络程序设计模型 9.1.2 程序框架 无连接的客户与服务器之间的交互通信模型可以图9-1表示。 9.1 UDP网络程序设计模型 9.1.2 程序框架 图9-1所示的通信模型也明确的表示出了无连接的客户机/服务器程序框架,图中在进行数据交换时,双方均可以发送数据和接收数据。 在具体编写无连接的客户机/服务器程序时,应该注意以下几个问题: ? 通信的一方可以不用bind()绑定IP地址和端口,而由系统自动分配,但要注意不绑定IP地址和端口的一方必须首先向绑定地址的一方发送数据。 ? 无连接应用程序也可以调用connect()函数,但是它并不向对方发出建立连接的请求,内核只是将connect()中指定的目标端IP地址和端口号记录下来,在以后的通信中就可以使用面向连接的数据发送send()和数据接收revc()函数。 9.1 UDP网络程序设计模型 9.1.2 程序框架 ? 无连接的数据报传输过程中,做为服务器的一方必须要先启动,否则客户请求传不到服务进程。 ? 由于无连接的客户端一般不调用connect(),因此在数据发送之前,客户与服务器之间尚未建立一个全相关(五元组),但各自通过socket()和bind()调用建立了半相关。发送数据时,发送方除指定本地套接口的地址外,还需指定接收方套接口的地址,从而在数据收发过程中动态地建立了全相关。 9.2 UDP实例程序1 实例程序说明 本实例程序使用的编程环境为Visual C++6.0,使用的是控制台程序“Win32 Console Application”。通信协议使用无连接的UDP协议(SOCK_DGRAM)。服务器端IP地址由系统指定,端口号在程序中指定为5050,用符号常量定义。 编该实例中我们编写一个基于数据报的客户机/服务器交互程
您可能关注的文档
- SQL Server数据库应用与开发李德有 彭德林电子教案 SQL 2005第2章.ppt
- SQL Server数据库应用与开发李德有 彭德林电子教案 SQL 2005第3章.ppt
- SQL Server数据库应用与开发李德有 彭德林电子教案 SQL 2005第4章.ppt
- SQL Server数据库应用与开发李德有 彭德林电子教案 SQL 2005第5章.ppt
- SQL Server数据库应用与开发李德有 彭德林电子教案 SQL 2005第6章.ppt
- SQL Server数据库应用与开发李德有 彭德林电子教案 SQL 2005第7章.ppt
- SQL Server数据库应用与开发李德有 彭德林电子教案 SQL 2005第8章.ppt
- SQL Server数据库应用与开发李德有 彭德林电子教案 SQL 2005第9章.ppt
- SQL Server数据库原理及应用 第二版 教学课件 作者 曾长军 第 1 章 数据库基础概述.ppt
- SQL Server数据库原理及应用 第二版 教学课件 作者 曾长军 第 2 章 SQL Server 2000简介.ppt
- TCP_IP网络编程 教学课件 作者 任泰明 第10章.ppt
- TCP_IP网络编程 教学课件 作者 任泰明 第11章.ppt
- TCP_IP——协议分析与应用编程 教学课件 李峰 陈向益 第1章.ppt
- TCP_IP——协议分析与应用编程 教学课件 李峰 陈向益 第2章.ppt
- TCP_IP——协议分析与应用编程 教学课件 李峰 陈向益 第3章.ppt
- TCP_IP——协议分析与应用编程 教学课件 李峰 陈向益 第4章.ppt
- TCP_IP——协议分析与应用编程 教学课件 李峰 陈向益 第5章.ppt
- TCP_IP——协议分析与应用编程 教学课件 李峰 陈向益 第6章.ppt
- TCP_IP——协议分析与应用编程 教学课件 李峰 陈向益 第7章.ppt
- TCP_IP——协议分析与应用编程 教学课件 李峰 陈向益 第8章.ppt
最近下载
- 最新2023版知识产权贯标GBT29490 09知识产权维护运用控制程序(含表单)[知识产权合规管理体系文件].docx
- 煤矿合法股权转让协议9篇.docx VIP
- GB_T 9711-2023石油天然气工业 管线输送系统用钢管.doc VIP
- 导体结构设计.xls VIP
- 电梯安全风险管控清单.doc VIP
- 生殖医学中心专业技术人员考核试题及答案.docx VIP
- 2024年度健康体检大数据蓝皮书.pdf
- 部编版语文六年级上册第四单元教案+教学反思(共6篇).pdf VIP
- 球墨铸铁管与其它管材的连接件技术规范.docx VIP
- NB∕T 11273-2023 工业锅炉设计文件鉴定技术导则.pdf
文档评论(0)