已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 厂房租赁合同模板
- 2024工程顾问合同范本
- 地下车位租赁合同纠纷处理办法
- 建筑工地施工升降机租赁合同
- 2024简单的保姆用工合同协议书范本
- 制作合同范本(半成品)范本
- 跨国教育机构合作办学范本
- 2024公司收购合同范本
- 2024年贸易合同标准范本
- 委托管理合同范例大全
- 2024天猫男装行业秋冬趋势白皮书
- 《正确对待外来文化》名师课件
- 2024年绵阳科技城新区事业单位考核公开招聘高层次人才10人(高频重点复习提升训练)共500题附带答案详解
- 中医食疗药膳学智慧树知到答案2024年四川护理职业学院
- 建筑项目安全风险分级管控清单建筑风险分级管控清单(范例)
- 马背上的民族蒙古族少数民族蒙古族介绍课件
- 工程图学(天津大学)智慧树知到期末考试答案章节答案2024年天津大学
- 农村户改厕施工协议书
- 当代社会政策分析 课件 第十一章 残疾人社会政策
- 家政公司未来发展计划方案
- ISO28000:2022供应链安全管理体系
评论
0/150
提交评论