Vb 6 winsock 局域网传文件太慢,高手进

用VB6写了个局域网传文件的小程序,能用,
而且单机测试速度相当快,文件大的话几十M/S
就是用2台电脑测试速度太慢,才几十K,,
我的神啊。。。这是局域网吗??
知道的指点下,先谢了

想要分的可以留言,问题解决了一定会再加的
发送端:
Private Sub SendFile(file_name As String, file_size)
Dim fbsize As Long, fbnumber As Long, wbsize As Long, tmp() As Byte
fbsize = 1048576 '包大小
fbnumber = file_size \ fbsize
wbsize = file_size Mod fbsize '尾包大小

ReDim tmp(1 To fbsize)
h = FreeFile
Open file_name For Binary Access Read As h

For i = 1 To fbnumber
Get #h, , tmp
WS2.SendData tmp()
Next

If wbsize > 0 Then '尾包
ReDim tmp(1 To wbsize)
Get #h, , tmp()
WS2.SendData tmp()
WS2get = ""
End If
Close h
End Sub

接收的
Private Sub WS2_DataArrival(ByVal bytesTotal As Long)
ReDim tmp(1 To bytesTotal)
WS2.GetData tmp(), vbByte
tmpsize = tmpsize + bytesTotal
Shape1.Width = tmpsize / upfilesize * Picture1.Width

Put #h, , tmp()
If tmpsize = upfilesize Then
Close h
WS1.SendData "Over": tmpsize = 0
End If
End Sub

第1个回答  2010-12-07
VB传文件确实不太快, 以前我也写过类似程序。能传到几百K/S,最快能达1M(这都是在局域网上)。
建议你把每次发送的数据包大小改一下。不要用1048576,改为1500左右试下。因为网络包最大为1500。本回答被网友采纳
第2个回答  2010-12-08
多开几个Winsock
传输数据的时候要DoEvents本回答被提问者采纳
第3个回答  2010-12-08
请直接到这里下载

快速的多文件传送源码,在本地局域网上可达到1.8Mb+的速度

Vb 6 winsock 局域网传文件太慢,高手进
VB传文件确实不太快, 以前我也写过类似程序。能传到几百K\/S,最快能达1M(这都是在局域网上)。建议你把每次发送的数据包大小改一下。不要用1048576,改为1500左右试下。因为网络包最大为1500。

vb6.0用winsock控件不能链接局域网内的计算机。跪求大神指导。。。_百...
Winsock1_ConnectionRequest(ByVal requestID As Long)’当有客户连接的时候出发事件 Winsock1.Close ‘关闭控件,应为服务器控件拿来侦听端口所以要先关闭 Winsock1.Accept requestID ‘绑定客户端信息,之后就可以和客户端发送数据了,但是绑定之后就不能再用来侦听端口了,你可以创建一个控件数组,winsock...

VB6.0的winsock控件用UDP局域网广播数据,当数据很大时接收方报10040...
解决你的问题,大概有几个方法:一.控制发送速度,简单但是效率有点低 二.技术方加大数据缓冲,优先接收,读了就放内存里,接收完或是空闲时再处理,这在处理过程复杂时比较有效 三.出错的数据丢掉---没错,就是不要了!既然你选择了UDP,就无法避免丢包的事情发生,肯定要有相关的容错处理.网络可以"自动"丢...

使用VB6.0软件winsock控件向服务器传输文件出现内存溢出,求解!
1、一次读入的txt文件过大, 几百M之类的。。(解决办法,分段读取)2、ReDim数组时占用大量内存空间也可以出现这样的问题 (解决办法,redim重定义数组时不要把范围定的太大)3、一个无限死循环 读txt死循环 (解决办法,你别自己没事写死循环就好了^-^)4、使用了API函数 并且监视自己窗口的消息。

vb中用winsock控件的传输速率
不是啊,一个winsock控件,每次发送的数据不能超过8k的,所以,如果仅仅用一个控件来实现数据发送接收,肯定很慢的。你可以用控件数组实现数据传输,让许多控件同时发送、接收,这样就很快。我做了一个,传输速度可达每秒好几兆的。

VB中用winsock与外网连接,高手进!!
有个简单的方式可以试一试。比如你同学的机器IP是 10.10.10.10 (这个IP必须保证是公网IP或者说是外网IP),他的程序在6666端口监听。那你用telnet 10.10.10.10 6666 命令,看看能不能连接上,如果不能,那就是网络不通了。当然,如果都在内网里,想要穿透NAT网关,这个技术就复杂了,你可以去找...

求利用vb做的一个可以在局域网聊天,传文件的程序
使用Winsock 控件利用WinSock 控件可以与远程计算机建立连接,并通过用户数据文报协议 (UDP)或者传输控制协议 (TCP)进行数据交换。这两种协议都可以用来创建客户与服务器应用程序。与 Timer 控件类似,WinSock 控件在运行时是不可见的。可能的用途创建收集用户信息的客户端应用程序,并将收集的信息发送到某中央服务器。创建...

vb中winsock发送图片接收不了问题
局域网的IP包是1.5k 发送字节数组的方式,每次不要超过1.5K;超过了 会导致数据接收错误。

vb 局域网聊天,请高手帮忙~
Winsock1.RemoteHost = my '这里应该是设置为别人计算机的IP地址,由于自己是单机,所以就设置成自己的,自己给自己发信息 End Sub Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) '取得数据时发生 Dim Tmp As String Winsock1.GetData Tmp, vbString '取得数据 Tmp = "对方位址:" +...

怎样用VB编写一个在局域网中能同时传输多个文件的程序?
如果是指定的共享文件夹,你可以使shell语句,调用一个copy。也可以使用filessystemobject对像的拷贝命令来做。要知道,如果是已知的共享文件夹的话,你实际就等于在做一个本地移动或复制文件的操作。如果待传输文件是提前无法预知的,就再挂一个dialog控件就可以了 ...

相似回答