Client/Server Socket在文件传输中连接速度很慢的问题!!!(50分)

  • 主题发起人 主题发起人 manana
  • 开始时间 开始时间
M

manana

Unregistered / Unconfirmed
GUEST, unregistred user!
偶用ClientSocket与ServerSocket实现的一个局域网点对点文件传输的程序,
不知道为什么Client与Server连接速度非常慢,在自己机子上测试有时长达两分钟的时间,
(偶感觉不应该是这样的),在局域网内的机子测试同样很慢,但是偶尔速度也会较快,
文件可正常传输(测试用最大大于200M),偶不明白是何原因。而且用Indy组件中的
IdTCPClient和IdTCPServer连接速度非常快,偶对这些组件不太了解,不知道到底是什么
原因,请知道的朋友给指明一下,先谢了。现上50分,也不知道是否给少了...
 
每次发送的数量为5K<-->10K之间,不要一次性发完,再试试

我试过发的时候为100K,速度真慢,慢慢的改为这个数就行了,就像copy文件一样了。
 
关注:)
 
谢谢copy_paste,我这里主要是发送与接收端建立连接时非常慢,你所说的我可以试试。
 
把一些垃圾协议去掉,只留下TCP,重启。

再到Window/WinNT目录找"Hosts"这个文件,编辑一下:
格式:

127.0.0.1 localhost
yourDestIP1 YourHostName1
yourDestIP2 YourHostName2
yourDestIP3 YourHostName3
....
这样试试。Good luck
 
copy_paste你好,我试过你的方法了,发现我这里还存在一下问题:
原先我分块大小为900字节,(当时我试过超过1K就出现一些错误提示,而小于1K就没有问题
我就想当然认为可能块大小不可以超过1K,见笑了),当看到你的建议后,我就试了一下,
改为2K的块,结果正常(纳闷,为什么我当时试就不行,好像代码也没有什么变化,??),
接着该为8K,结果出错,出现一些例如:
Access violation at address 73656E64,read of address 73656E64.
Access violation at address 00416061 in module "transfileproject.exe",read of address.
Access violation at address 00A4727F,write of address 01EE42A2.
有时是在传输文件前,有时在传输文件过程中。后改为4K,又正常,???,
与网络、网卡有关吗?

连接速度慢的问题,我今天试了,情况好多了,但是我只是改了块的大小(900字节改为4K),
不知道与网络或者网卡有没有关系?

谢了。
 
呵呵,这种问题原因很简单,对WINSOCK的错误没有正确的处理
 
无忌师兄(这样称呼不知可以否),小弟真的很菜,希望你能指点一下,对winsock的错误
如何进行处理。谢谢!!!
 
不管在什么I/O模式下,你最好在sendbuf之后判断一下发出了多少数据,一般情况下TCP很少能完全把你放到
缓冲区里的数据发出去。然后再准备下一次的发送,各种I/O模式下处理错误也不一样,要注意哦
 
我搞过,速度很快呀,在局域网内,跟文件拷贝差不多,
 
你的出错信息好像是内存出错,是不是定义的数组不够大。一次能够发送的大小与系统的
缓冲大小有关,windows系统默认的大小是16k。
连接速度慢是不是用主机名连接,如果要解析域名的话,可能就会耗时。
 
后退
顶部