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毫秒