gpt4 book ai didi

delphi - 使用 Indy 提高传输速度

转载 作者:行者123 更新时间:2023-12-03 19:43:05 24 4
gpt4 key购买 nike

我需要使用 INDY10 组件将许多文件从一个 tcp indy 服务器传输到客户端。有没有办法通过为 TCP 客户端或服务器通信设置任何参数来提高传输速度。

文件大小:~ 10 MBYte .... 50 Mybte

文件大小是否有限制,我的电脑使用的是 WIN 7 x64 和 32 GBYTE RAM 我们的网络是 LAN.100 其他位置 LAN 已经改进为 GIGABIT LAN

  function SendStream(AContext: TIdContext; AStream: TStream): Boolean; overload;
var
StreamSize: LongInt;
begin
try
Result := True;
try
StreamSize := (AStream.Size);

// AStream.Seek(0, soFromBeginning);

AContext.Connection.IOHandler.Write(LongInt(StreamSize));
AContext.Connection.IOHandler.WriteBufferOpen;
AContext.Connection.IOHandler.Write(AStream, 0, False);
AContext.Connection.IOHandler.WriteBufferFlush;
finally
AContext.Connection.IOHandler.WriteBufferClose;
end;
except
Result := False;
end;
end;

最佳答案

发送代码可以简化为

  function SendStream(AContext: TIdContext; AStream: TStream): Boolean;
begin
Result := True;
try
AContext.Connection.IOHandler.Write(AStream, 0, True);
except
Result := False;
end;
end;

第三个参数使 Indy 将流大小作为 Integer 或 Int64(取决于 TIdIOHandler.LargeStream 属性的值)值写入客户端。

然后客户端可以读取流大小和流使用
// reads the stream size then reads the stream data
Client.IOHandler.ReadStream(MyStream, -1, False);

(在 Delphi TidTCPServer and TidTCPClient transferring a record 中找到,其中只有传输方向相反)

关于delphi - 使用 Indy 提高传输速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13663274/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com