问题描述在倒数第三行的注释,读取二进制文件
Private Sub Command1_Click()
WinClient.RemoteHost = "127.0.0.1"
WinClient.RemotePort = 1001
WinClient.Connect ' 进行连接
End Sub
Private Sub Command2_Click()
If WinClient.State <> 7 Then
Exit Sub
End If
Dim FLen As Long
Dim Fdata() As Byte
Dim Alist As Long
FLen = FileLen("c:\a.bmp") '获取文件长度
Open "c:\a.bmp" For Binary As 1 '打开文件,文件号为1
For Alist = 1 To FLen Step 1000 '每次读取1024个字节
DoEvents
If Alist + 1000 > FLen Then
ReDim Preserve Fdata(FLen - Alist)
Get #1, Alist, Fdata '读取文件数据
End If '如果剩下的字节数小于1024
If Alist + 1000 < FLen Then
ReDim Preserve Fdata(1000)
Get #1, Alist, Fdata
End If '如果剩下的字节数大于等于1024
WinClient.SendData Fdata
Me.Caption = Val(Me.Caption) + UBound(Fdata)
'这里显示的数据总比实际值小1,为什么,想了很久,没找到问题所在,请指教!
Next
End Sub
WinClient.RemoteHost = "127.0.0.1"
WinClient.RemotePort = 1001
WinClient.Connect ' 进行连接
End Sub
Private Sub Command2_Click()
If WinClient.State <> 7 Then
Exit Sub
End If
Dim FLen As Long
Dim Fdata() As Byte
Dim Alist As Long
FLen = FileLen("c:\a.bmp") '获取文件长度
Open "c:\a.bmp" For Binary As 1 '打开文件,文件号为1
For Alist = 1 To FLen Step 1000 '每次读取1024个字节
DoEvents
If Alist + 1000 > FLen Then
ReDim Preserve Fdata(FLen - Alist)
Get #1, Alist, Fdata '读取文件数据
End If '如果剩下的字节数小于1024
If Alist + 1000 < FLen Then
ReDim Preserve Fdata(1000)
Get #1, Alist, Fdata
End If '如果剩下的字节数大于等于1024
WinClient.SendData Fdata
Me.Caption = Val(Me.Caption) + UBound(Fdata)
'这里显示的数据总比实际值小1,为什么,想了很久,没找到问题所在,请指教!
Next
End Sub
作者: weiyulin 发布时间: 2011-10-26
Me.Caption = Val(Me.Caption) + UBound(Fdata)
你的意思是Me.Caption和实际的Val(Me.Caption) + UBound(Fdata)不符?
直接Debug.Print看看UBound(Fdata)到底是多少呢
你的意思是Me.Caption和实际的Val(Me.Caption) + UBound(Fdata)不符?
直接Debug.Print看看UBound(Fdata)到底是多少呢
作者: WallesCai 发布时间: 2011-10-26
不是,我的意思是说 已发送字节数<>文件长度 不知道哪里出的问题,请指教(实际发送长度=文件长度-1)
作者: weiyulin 发布时间: 2011-10-26
引用 2 楼 weiyulin 的回复:
不是,我的意思是说 已发送字节数<>文件长度 不知道哪里出的问题,请指教(实际发送长度=文件长度-1)
不是,我的意思是说 已发送字节数<>文件长度 不知道哪里出的问题,请指教(实际发送长度=文件长度-1)
用个本办法就可以知道了:发送一个短文件,接收并查看是否一致,如果一致则说明是计数方法不同导致的
作者: WallesCai 发布时间: 2011-10-26
貌似对我有点困难,第一次用sock发送文件
作者: weiyulin 发布时间: 2011-10-26
朋友能帮我调试下吗
作者: weiyulin 发布时间: 2011-10-26
貌似找到问题了,在Senddata 的前后加 Doevents ,服务器端接收的时候 字节数就一样,我再看看,谢谢你
作者: weiyulin 发布时间: 2011-10-26