再问TIdTCPClient SendBuffer方法。

Shiyl 2004-11-10 08:45:46
为什么发送1000个字节的速度没有发送10000个字节的速度快
测试结果是
10000 Byte 20ms
1000 Byte 270ms
...全文
269 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
WGYKING 2004-11-12
  • 打赏
  • 举报
回复
被偶解决了
哈哈~~
北光 2004-11-12
  • 打赏
  • 举报
回复
在Indy中,WriteBuffer时会自动创建一个内存流,用这个流来做缓存,等达到一定数量才发送。
所以你可以试一下,发送10M的东西,两种方式应该一样快。
Shiyl 2004-11-12
  • 打赏
  • 举报
回复
liangjinliang()
问题是我发送的绝对不要10M,而且不能累积到一定量再发
谢谢你的回答。
WGYKING(修罗是谁?!)
已经帮我解决。加个TCPCONNECtion.flushwritebuffer.
结贴。
Shiyl 2004-11-11
  • 打赏
  • 举报
回复
还漏说一个,测试的时候不要在本机侧,用2台机器测。
分数可以加
Shiyl 2004-11-11
  • 打赏
  • 举报
回复
接受buf大小和发送buf大小一样
例如测试1000的时候
S.Size:=1000;
AThread.Connection.ReadBuffer(buf[0],1000);
测试10000的时候
S.Size:=10000;
AThread.Connection.ReadBuffer(buf[0],10000);
Shiyl 2004-11-11
  • 打赏
  • 举报
回复
发送代码:
var
S:TMemoryStream;
begin
S:=TMemoryStream.Create;
S.Size:=10000;
S.Position:=0;
TCP.WriteBuffer(S.Memory^,S.Size,true);
S.Free;
TCP.ReadLn;
end;

接受代码
AThread.Connection.ReadBuffer(buf[0],1000);
AThread.Connection.WriteLn();

测试1000的时候是150-200 ms
测试10000的时候是10-20 ms

各位可以测试一下,如果知道原因请告之。谢谢:)
Dlwxn 2004-11-11
  • 打赏
  • 举报
回复
up
cjf1009 2004-11-11
  • 打赏
  • 举报
回复
mark
ly_liuyang 2004-11-11
  • 打赏
  • 举报
回复
我只有一台机器的

没完整代码测试麻烦的

Buffer的问题是有一定的影响的,但不至于差别10倍那么大吧


http://lysoft.7u7.net
WGYKING 2004-11-11
  • 打赏
  • 举报
回复
^_^
WGYKING 2004-11-11
  • 打赏
  • 举报
回复
嘻嘻~~
klykly 2004-11-10
  • 打赏
  • 举报
回复
要看你的代码是否有问题啊!
huiwww 2004-11-10
  • 打赏
  • 举报
回复
把代码贴出来

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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