WinSock怎样一次发送和接受大量的数据

likesome 2004-06-11 01:40:22

tstr="aa bb cc"
以前我做进都是WinSock(My_index).SendData tStr
都是数据库中的一条记录,如果有近万条记录要一次发送,怎样解决?
能不能给个示例或代码
...全文
289 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
horsefly 2004-06-17
  • 打赏
  • 举报
回复
这是第一种方法[把所有的记录放在一个string中,不过这种方法要注意string类型所能存放的最大长度,如果超过了那就以这个长度为限,分几次发出]
发送方:
redim str(rs.count)

rs.movefirst
while (rs.eof<>true)
i=i+1
str(i)=rs.field("字段名1") & "," & rs.field("字段名2") & ... & "," & rs.field("字段名n")
rs.movenext
loop

dim sndStr as string
sndStr=join(str,vbClrf)
winsock.senddata sndStr

接受方:
dim rows() as string
dim fields() as string
dim i as long
winsock.getdata strData
rows=split(strData,vbCLrf)
for i=0 to ubound(rows)-1
fields=split(rows(i),",")
'这里是你要对这行数据的具体操作,如显示之类的
next

第二种[就是把得到的记录写到文件中,然后用二进制的方法把这个数据文件发到接受方]
Open filepath For Output As #1
while (rs.eof<>true)
strData=rs.field("字段名1") & "," & rs.field("字段名2") & ... & "," & rs.field("字段名n") & vbCLrf
Print #1, strData
strData=""
loop
Close #1
dim filestream() as byte

redim filestream(filelen(filepath))
open filepath for Binary as #1
get #1,filestream
close #1

然后把filestream发到接受方

接受方:
得到数据后组合数据

第三种[同样是把得到的记录写到文件中,然后发条消息给client端,如“数据文件处理完成”;当client接到这条消息后,通过ftp的方式到server把数据文件取下来]
发送方:
Open filepath For Output As #1
while (rs.eof<>true)
strData=rs.field("字段名1") & "," & rs.field("字段名2") & ... & "," & rs.field("字段名n") & vbCLrf
Print #1, strData
strData=""
loop
Close #1
winsock.senddata "数据文件处理完成"

接受方:
winsock.getdata strMsg
if strMsg="数据文件处理完成" then
GetDataFileByFtp(svIP,User,Password,filename)
end if

private sub GetDataFileByFtp (byval svIP as string, _
byval user as string, _
pwd as string, _
fn as string)

strData="open " & svIP & vbCLrf & _
"user " & use & " " & pwd & vbCLrf & _
"binary" & vbCLrf & _
"GET " & 数据文件放在server端的路径 & fn & _
" " & 数据文件存放在client端的路径 & fn & _
vbCLrf & "bye"
open "c:\ftp.bat" for output as #1
print #1,strData
close #1

shell "c:\ftp.bat",vbHide
end sub
到此介绍完毕,注意错误控制。
nik_Amis 2004-06-16
  • 打赏
  • 举报
回复
u[
flxa 2004-06-15
  • 打赏
  • 举报
回复
学习中,我也要用WINSOCK传递一些大于10M左右的文件。
我也不知道怎么做。
icemanzhai 2004-06-15
  • 打赏
  • 举报
回复
把一个完整的分成一个一个包过去后在组包
nik_Amis 2004-06-14
  • 打赏
  • 举报
回复
up
GERY2003 2004-06-13
  • 打赏
  • 举报
回复
学习中。。。。。。。
qyii 2004-06-13
  • 打赏
  • 举报
回复
数W条记录,对于人来说,非常可怕.但计算机可不吃这套.
一:通过临时文件.把记录写入文件传送出去.
二:通过字串数组.(但在未清楚记录内容和长度时,这项作保留)
boyzhang 2004-06-12
  • 打赏
  • 举报
回复
GZ
cslf 2004-06-12
  • 打赏
  • 举报
回复
压缩成文件后发送效率要高许多,但是大文件就会有许多实际问题。用字符串要简单的多。
jinesc 2004-06-11
  • 打赏
  • 举报
回复
用文本发 代码简单许多 效率更高
还是用 .SendData tStr


你就一条一条的发送 接收的时候自然 会合并的
ipman 2004-06-11
  • 打赏
  • 举报
回复
压缩打包后用2进制发,效率会高些
likesome 2004-06-11
  • 打赏
  • 举报
回复
能给个例子吗
jinesc 2004-06-11
  • 打赏
  • 举报
回复
那你合并在一起发呀, 客户端可能有多次响应的 ,你做个标记 把那么多的数据合并起来就可以了吧

是不是就类仕发大文件的原理吗?

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧