VB 版 (精华区)
发信人: Oracle (数据之光), 信区: VB
标 题: Re: 哪位大侠给看看:winsock如何传二进制文件?
发信站: 哈工大紫丁香 (Wed Oct 17 12:10:30 2001) , 转信
我已经找到毛病了,主要是二进制数组应该定义一下范围.
客户端:
Private Sub send_Click()
if txtFilename.text <> "" then
dim intFileLen as integer
dim ByteArray() as byte
open txtFilename.text for binary as #1
intFileLen=LOF(1)
redim ByteArray(intfilelen) as byte
get #1,,ByteArray
close #1
end if
End Sub
服务器端:
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
if txtFilename <> "" then
dim ByteArray() as byte
redim bytearray(bytestotal) as byte
winsock1.getdata bytearray,vbArray+vbByte,bytestotal
open txtFilename for binary as #2
put #2,,ByteArray
close #2
end if
End Sub
这样就可以了.但是,通过实验发现,最大只能8K,
再大的文件传输时服务器端会产生多次DataArrival事件,每次接收8192字节.
看资料说,winsock最大能64K,不知道怎么办.
【 在 Rorene (凝神) 的大作中提到: 】
: 数据不正确,是怎么个概念?你可以用 &00H ~ &FFH 测试一下,
: 【 在 Oracle (数据之光) 的大作中提到: 】
: : 源码如下:
: : 客户端:
: : Private Sub send_Click()
: : if txtFilename.text <> "" then
: : dim ByteArray(3000) as byte
: : open txtFilename.text for binary as #1
: : get #1,,ByteArray
: : close #1
: : end if
: : End Sub
: :
--
※ 来源:.哈工大紫丁香 http://bbs.hit.edu.cn [FROM: 202.97.207.69]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.844毫秒