VB局域网文件传输带防止丢包.docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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#? ?

文档评论(0)

2017ll + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档