winsock控件的接收二进制数据问题。急!
我做了一个html文件,想用winsock控件和服务器进行文件传输,现在通信都通了,就是接收二进制文件的时候总出错误: unsupported variant types! 部分代码如下:
服务器端(暂时用vb做了一个简易的测试):
Dim myFile() As Byte
Dim lngFile As Long
Dim FileName As String
FileName = VB.App.Path & "\FreeICQ0904.exe "
lngFile = FileLen(FileName)
ReDim myFile(lngFile - 1) As Byte
Open FileName For Binary As #1
Get #1, , myFile
Close #1
Winsock1.SendData myFile
客户端:
<script>
sub sock_DataArrival(BytesTotal)
Dim myFile()
ReDim myFile(BytesTotal - 1)
sock.GetData myFile,vbArray + vbByte
end sub
</script>
能正确建立连接,收发字符串都没有问题,就是不能收二进制文件,请大家指点!
先谢过了!
------解决方案--------------------脚本只能操作var数据类型,不管是js还是vbs
byte()操作必须用变通的办法。比方
<script language=vbs>
sub winsock1_onDataArrival(nc)
dim oAs
dim bytBuffer '这里千万不要定义成bytBuffer(),否则系统默认为vbVariant or vbArray
set oAs=createobject( "adodb.stream ")
oas.type=1
oas.mode=3
oas.open
winsock1.GetData bytBuffer
oas.write bytBuffer
oas.savetofile "test.jpg " '保存为文件
oas.close
set oas=nothing
end sub
</script>