已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
UDP本身是一种无连接的协议。它只管发送,而不需要知道,发送的包是不是准确的到达了目的地。所以它具有发送效率高的特点,同时也具有丢包的弱点。但如果对UDP加一些验证和重发机制,就能很大程度上避免丢包的情况,达到稳定的传输。同时,此种方式的传输速度会比TCP方式的传输快很多。以下是一种串行的带验证重发机制的UDP传输文件,源代码,CLIENT负责发文件,SERVER负责接文件。希望对大家有帮助。程序中,发送的包是自己定义的,这样除了可以将需要发送的数据发送过去外,还可以将一些控制信息发过去。SERVER端INCLUDEINCLUDEINCLUDEINCLUDEINCLUDEPRAGMACOMMENTLIB,“WS2_32LIB“DEFINEPORT8000DEFINESERVER“1921681211“SOCKETSOCKINTSENDEXIT0/控制发送线程状态的全局变量INTRECVEXIT0/控制接收程状态的全局变量INTFILESIZE1/记录文件大小的全局变量INTRECVSIZE0/记录文件大小的全局变量INTID1SOCKADDR_INSERVERINTLENSIZEOFSERVERSTRUCTBAOHEAD/包头INTSIZEINTIDINTRECVSIZETYPEDEFBAOHEADELEMTYPEBAOHEADDATAHEADSTRUCTRECVBUF/包格式ELEMTYPEHEAD/包头CHARBUF1024/存放数据的变量INTBUFSIZE/存放数据长度的变量STRUCTRECVBUFDATADWORDWINAPIRECVFUNCLPVOIDLPPARAM/接收线程INTMAINWSADATAWSADATAWSASTARTUPMAKEWORD2,2,SOCKSOCKETAF_INET,SOCK_DGRAM,0/建立SOCKETIFSOCKSOCKET_ERRORPRINTF“SOCKET创建失败N“RETURN0SOCKADDR_INADDRADDRSIN_FAMILYAF_INETADDRSIN_PORTHTONSPORTADDRSIN_ADDRS_ADDRINET_ADDRSERVERINTNRESULTBINDSOCK,SOCKADDR/绑定SOCKETIFNRESULTSOCKET_ERRORPRINTF“绑定SOCKET有问题N“RETURN0ELSEPRINTF“服务启动成功N“DWORDIDHANDLEHANDLECREATETHREADNULL,0,RECVFUNC,0,0,/创建接收线程INTI0IFRECVEXIT1/PRINTF“BUFSIZEDN“,DATABUFSIZEFWRITEDATABUF,SIZEOFCHAR,DATABUFSIZE,FPRECVSIZERECVSIZEDATABUFSIZE/记录新的接收到的文件长度/PRINTF“RECVSIZEDN“,RECVSIZEFILESIZEDATAHEADSIZEDATAHEADIDDATAHEADIDDATAHEADRECVSIZERECVSIZEDATAHEADSIZEFILESIZEINTDSENDTOSOCK,CHAR/发送收到数据的确认包IFD0/PRINTF“发送收到数据包的确认信息成功N“IDID1ELSEIFDATAHEADID0/PRINTF“发送收到数据包的确认信息成功N“IFFILESIZERECVSIZE/如果接收到的文件长度等于文件大小,/等发送一个确认包告诉发送端文件已接收完成,并退出自己的接收线程DATAHEADIDDATAHEADIDDATAHEADRECVSIZE1DATAHEADSIZEFILESIZEPRINTF“FILESIZEDN“,FILESIZEPRINTF“RECVSIZEDN“,RECVSIZEPRINTF“文件接收完成N“INTDSENDTOSOCK,CHARSENDEXIT2RECVEXIT2BREAKFCLOSEFPRECVEXIT2RETURN0CLIENT端INCLUDEINCLUDEINCLUDEINCLUDEINCLUDEPRAGMACOMMENTLIB,“WS2_32LIB“DEFINESERVER“1921681211“STRUCTBAOHEAD/包头格式INTSIZEINTIDINTRECVSIZETYPEDEFBAOHEADELEMTYPESTRUCTSENDBUF/数据包格式ELEMTYPEHEAD/包头CHARBUF1024/存放数据的变量INTBUFSIZE/存放本包存放数据的BUF变量的长度的变量。STRUCTSENDBUFDATADWORDWINAPISENDFUNCLPVOIDLPPARAM/发送线程DWORDWINAPIRECVFUNCLPVOIDLPPARAM/街收线程SOCKETSOCKINTSENDEXIT0/控制发送线程状态的全局变量INTRECVEXIT0/控制接收线程状态的全局变量INTFILESIZE0/记录文件大小的全局变量INTRECVSIZE0/返回已接收文件大小的全局变量SOCKADDR_INSERVERINTLENSIZEOFSERVERINTSENDID0/发送IDINTRECEIVEID0/接收IDHANDLEHEVENT/句炳INTMAINHEVENTCREATEEVENTNULL,FALSE,FALSE,NULL/创建一个事件WSADATAWSADATAWSASTARTUPMAKEWORD2,2,SOCKSOCKETAF_INET,SOCK_DGRAM,0IFSOCKSOCKET_ERRORPRINTF“SOCKET创建失败N“RETURN0ELSEPRINTF“服务启动成功N“SERVERSIN_FAMILYAF_INETSERVERSIN_PORTHTONS8000/SERVER的监听端口SERVERSIN_ADDRS_ADDRINET_ADDRSERVER/SERVER的地址GETCHDWORDIDHANDLEHANDLECREATETHREADNULL,0,RECVFUNC,0,0,/创建接收线程INTI0IFRECVEXIT1DWORDDRETWAITFORSINGLEOBJECTHEVENT,500/发送完后,等待500毫秒。等待中如果等待的事件被激活,则马上返回。SWITCHDRETCASEWAIT_TIMEOUT/一段时间内没收到确认包,重发刚才的那个数据报SENDTOSOCK,CHAR/PRINTF“重新发送数据SN“,CHARBREAKDEFAULTBREAK/否则返回。FCLOSEFP1SENDEXIT2RETURN0DWORDWINAPIRECVFUNCLPVOIDLPPARAMRECVEXIT1/告诉主线程,接收线程已经启动。BAOHEADRECVBAOFD_SETFDREADWHILERECVEXIT1FD_ZEROFD_SETSOCK,TIMEVALVALVALTV_SEC60VALTV_USEC0INTRESULTSELECT0,/查看SOCKET是否可读IFRESULTSOCKET_ERRORBREAKIFRESULT0/不可读则马上返回。重新判断CONTINUEINTRECRECVFROMSOCK,CHAR/可读状态下接收数据报IFREC0/PRINTF“收到确认信息SN“,CHARRECVSIZERECVBAORECVSIZE/将接收大小传给全局变量RECEIVEIDRECVBAOID/记录此次接收到包的IDSETEVENTHEVENT/激活事件IFRECVBAORECVSIZE1/如果接收端发送接收完毕的信号,则发送,接收线程均自行退出,并显示发送文件完成SEN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 北京市第101中学2026届高一下生物期末质量检测试题含解析
- 福建省长汀一中2026届高一下生物期末调研模拟试题含解析
- 安徽省六安市霍邱县正华外语学校2026届高一下数学期末教学质量检测模拟试题含解析
- 2025年美团物流规划校招笔试及答案
- 2025年临床事业单位考试题目及答案
- 2025年合肥市代课老师面试题库及答案
- 2025年黑龙江乡村基层面试题库及答案
- 2025年江西省肿瘤护理笔试及答案
- 2024年郑州智能科技职业学院马克思主义基本原理概论期末考试题含答案解析(夺冠)
- 2025年浙江警察学院马克思主义基本原理概论期末考试模拟题带答案解析(必刷)
- 湖北省圆创高中名校联盟2026届高三2月第三次联合测评生物试卷(含答案解析)
- 2025-2026学年河北省沧州市四校联考高三上学期期中考试语文试题(解析版)
- 大推力液体火箭发动机综合测试中心建设项目可行性研究报告模板立项申批备案
- 2025年航空发动机涂层材料技术突破行业报告
- 家谱图评估与干预
- 雇佣老人看门协议书
- 江苏省苏州市相城区南京师范大学苏州实验学校2025年苏教版小升初考试数学试卷(含答案)
- 高一年级英语上册阅读理解专项练习及答案(50篇)
- 个人借款合同模板
- 2025年全国中级经济师考试真题卷含答案经济基础知识
- 2025年跆拳道教练职业水平测评试题及答案解析
评论
0/150
提交评论