一个发送和接收文件的代码,可收到的文件总是不对,各位高手看看问题在哪儿?

xayzmb 2008-03-24 12:21:32
'接收
Private Sub wskS_DataArrival(Index As Integer, ByVal bytesTotal As Long)
'On Error GoTo err1
'接收文件
Static i As Long
Dim inFile() As Byte
Dim myLong As Double
Dim myPath As String
Dim myFree As Long

myPath = VB.App.Path & "\temp\abc.flv"

ReDim inFile(bytesTotal)

wskS(Index).GetData inFile, vbArray + vbByte
myFree = FreeFile
Open myPath For Binary As #myFree '新建文件
Put #myFree, lenth + 1, inFile '将收到的数据写入新文件中
Close #myFree '关闭
'记录文件长度
lenth = lenth + UBound(inFile) - LBound(inFile) + 1

End Sub

'发送
Public Function outFiles(filePath As String)
Dim outPath As String
Dim outFileLen As Double
Dim outFileLenN As Double
Dim outFileStar As Double
Dim lngN As Double
Dim outN As Double
Dim outFree As Long
Dim i As Long

'检查是否与服务器连接
outPath = VB.App.Path & "\temp\1.flv"

outFileLen = FileLen(outPath)
outN = outFileLen \ 7000 + 1
outFileLenN = outFileLen - (outN - 1) * 7000

objJD.Max = outN
dblJD = 0
objJD.Value = 0
If outFileStar = 0 Then outFileStar = 1
If wskC.State = 7 Then
For i = 0 To outN - 1
If i = outN - 1 Then
outFileStar = i * 7000 + 1
lngN = outFileLen - outFileStar
Else
outFileStar = i * 7000 + 1
lngN = 7000
End If

ReDim outFile(lngN)
outFree = FreeFile
Open outPath For Binary As #outFree
Get #outFree, outFileStar, outFile
Close #outFree

wskC.SendData outFile

DoEvents
objJD.Value = i
DoEvents
Next
End If

End Function

...全文
134 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xayzmb 2008-03-24
  • 打赏
  • 举报
回复
在发送端
是想把大文件拆开发送
用这段代码做了文件的拆分组合测试
通过
Private Sub Command2_Click()
Dim inPath As String
Dim outPath As String
Dim inFileLen As Double
Dim outFileLen As Double
Dim inFileStar As Double
Dim outFileStar As Double
Dim lngN As Double
Dim outN As Double
Dim inFree As Long
Dim outFree As Long
Dim i As Long


'检查是否与服务器连接
outPath = VB.App.Path & "\temp\1.flv"
inPath = VB.App.Path & "\temp\2.flv"

outFileLen = FileLen(outPath)
outN = outFileLen \ 7000 + 1

For i = 0 To outN - 1
objJD.Max = outN
objJD.Value = i
If i = outN - 1 Then
outFileStar = i * 7000 + 1
lngN = outFileLen - outFileStar
Else
outFileStar = i * 7000 + 1
lngN = 7000
End If
inFileStar = outFileStar

ReDim outFile(lngN)
outFree = FreeFile
Open outPath For Binary As #outFree
Get #outFree, outFileStar, outFile
Close #outFree

ReDim inFile(lngN)
inFree = FreeFile
Open inPath For Binary As #inFree

Put #inFree, inFileStar, outFile
Close #inFree

Open inPath For Binary As #inFree
Get #inFree, inFileStar, inFile
Close #inFree
DoEvents


Next



End Sub
qiu5208 2008-03-24
  • 打赏
  • 举报
回复
把文件转化成二进制试试
xayzmb 2008-03-24
  • 打赏
  • 举报
回复
问题应该出在接收端的代码
我把写入后的文件与原文件读入数组后比较
前后总是错一个字节
嗷嗷叫的老马 2008-03-24
  • 打赏
  • 举报
回复
路过
qiu5208 2008-03-24
  • 打赏
  • 举报
回复
支持一下。
yangao 2008-03-24
  • 打赏
  • 举报
回复
贴的代码太少了
没法测试

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧