读书人

winsock控件的接收二进制数据有关问题

发布时间: 2012-01-14 20:02:35 作者: rapoo

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>

读书人网 >C#

热点推荐