日期:2014-05-19  浏览次数:20867 次

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>