- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
VB局域网文件传输带防止丢包
不知道你的winsock?是udp还是tcpip协议这里给你一个我写的实例?我是用的udp?这个发送了一段数据不一定接收就正确?所以我做了校验???以下是发送文件的Option?ExplicitDim?GetFileNum?As?Integer,?LenFile?As?Long,?SendByte()?As?Byte?发送的包Private?Sub?Command1_Click()On?Error?Resume?NextCommand1.Enabled?=?FalseGetFileNum?=?FreeFile?取得未使用的文件号LenFile?=?FileLen(Text1.Text)?获得需传送的文件的长度If?Text2.Text?=??Or?Right(Left(Text2.Text,?2),?1)??:?Then?Text2.Text?=?Text1.TextWinsock0.SendData?#SEND?STA#??LenFile??//??Text2.TextWt?0.5Open?Text1.Text?For?Binary?As?#GetFileNum?打开需传送的文件Call?TCPSendFile(Winsock0,?GetFileNum,?SplitFile)?传送文件Me.Caption?=?NowTi.Enabled?=?TrueEnd?SubPrivate?Sub?Command2_Click()Unload?MeEnd?SubPrivate?Sub?Form_Load()Dim?A?As?StringOn?Error?Resume?NextCommand2.Top?=?-2000Winsock0.RemoteHost?=?IPX?服务器ipWinsock0.RemotePort?=?FilePortEnd?SubPrivate?Function?SplitFile()?As?Long?拆包为了清晰,下面分别用两个子过程来完成计算这次还可以传多少个字节的数据和传送数据On?Error?Resume?NextDim?GetCount?As?LongIf?LenFile?=?4000?Then?计算出这次可发送的字节数? ? GetCount?=?4000? ? LenFile?=?LenFile?-?GetCountElse? ? GetCount?=?LenFile? ? LenFile?=?LenFile?-?GetCountEnd?IfSplitFile?=?GetCountEnd?FunctionPrivate?Sub?TCPSendFile(objWinSock?As?Winsock,?FileNumber?As?Integer,?SendLen?As?Long)On?Error?Resume?NextDim?FileByte()?As?Byte,?I?As?Long,?j?As?Long,?Temp?As?String?*?4ReDim?SendByte(0)ReDim?FileByte(SendLen?-?1)Temp?=?SendLen?+?7SendByte?=?Temp?把长度负值给包头Get?#FileNumber,?,?FileByte?读取文件ReDim?Preserve?SendByte(SendLen?+?7)?把包头+到文件头For?I?=?0?To?UBound(FileByte)? ? SendByte(I?+?7)?=?FileByte(I)? ? DoEventsNextWinsock0.SendData?SendByteEnd?SubPrivate?Sub?Form_Unload(Cancel?As?Integer)On?Error?Resume?NextWinsock0.CloseErr.ClearEnd?SubPrivate?Sub?TEnd_Timer()On?Error?Resume?NextWinsock0.SendData?#END#Err.ClearEnd?SubPrivate?Sub?Ti_Timer()On?Error?Resume?NextWinsock0.SendData?#ERR#End?SubPrivate?Sub?Winsock0_DataArrival(ByVal?bytesTotal?As?Long)On?Error?Resume?NextDim?S?As?StringWinsock0.GetData?SSelect?Case?SCase?ok?成功继续发送? ? If?LenFile?=?0?Then?发送完成? ? ? ? If?S??#SEND?END#?Then?Winsock0.SendData?#SEND?END#? ?
您可能关注的文档
最近下载
- 2024年中国石油东方地球物理勘探有限责任公司秋季高校毕业生招聘270人(甘肃有岗)笔试备考试题及答案解析.docx
- 天马旅游汽车公司管理职责、制度汇编.doc
- 从领导力角度说耿彦波——.ppt
- 唐山介绍PPT(唐山简介经典版).pptx
- 《我的家庭贡献与责任》第一课时小学道德与法治四年级上册PPT课件.pptx VIP
- 保养手册_迈腾b7l使用说明书.pdf
- 2024-2025人教版3三年级数学上册(全册)优秀测试卷(附答案).doc
- (2024年1月)广西各市房屋工程造价指标.doc VIP
- 2022年11月苏州城市学院下半年公开招聘27名管理岗位工作人员笔试参考题库含答案解析.docx
- 2023年义务教育初中英语新课标《英语新课程标准》解读ppt课件.pptx VIP
文档评论(0)