Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Indy velocidad de transferencia, por codigo. (https://www.clubdelphi.com/foros/showthread.php?t=59104)

JXJ 13-08-2008 01:25:59

Indy velocidad de transferencia, por codigo.
 
Hola..

una duda..

¿como puedo establecer la maxima velocidad de transferencia con indy?

ejemplo.
usando idtcpclient.. para enviar un archivo a idtcpserver.

suponiendo una conexion de 1 por segundo,
no se la velocidad de transferencia de indy por segundo.
pero me parece que indy y sus componentes intentan usar
todo el ancho de banda. y yo quiero que use siempre la velocidad que
yo decida.

entonces que no trate de enviar. a 1 mega por segundo..
sino. a 45 kilobites,, o a 10,, o a 50, 0 100, o,,, 200
que siempre segun yo decida, trate de enviar los archivos,
usando esos valores como limite maximo y que no trate de hacerlo
segun la velocidad de la red.

sale gracias. :D

duilioisola 13-08-2008 11:46:02

Para empezar : No conozco los componentes Indy en profundidad.

Supongo que tendrías que hacer algo para que se envíe un paquete y se quede esperando un tiempo para enviar el siguiente.

Si cada paquete es de 1KB y quieres enviar a 1KB/seg, deberás enviar ese paquete y mantenerte esperando durante 1 segundo, antes de seguir enviando los siguientes.

Si quieres enviar a 4KB/s, deberás contar cuantos paquetes has enviado en el último segundo y quedarte en espera cuando llegues a 4.

Por ejemplo:
agregas una variable global, que cuente paquetes y otra que especifique la cantidad máxima de paquetes por segundo.
Código Delphi [-]
var 
   Paquetes : integer;
   MaxPaquetes : integer;

Código Delphi [-]
procedure TForm1.Create(Sender : TObject)
begin
   {Tamano de Paquete}
   ComponenteIndy.BufferSize := 1024;
   {Cantidad Máxima de Paquetes por Segundo}
   MaxPaquetes := 4; 
end;
agregas un Timer con 1 segundo de intervalo.

Código Delphi [-]
procedure TForm1.Timer1Timer(Sender: TObject);
begin
   Paquetes := 0;
end;

En el proceso que envía paquetes:
Código Delphi [-]
procedure OnIndyEnvioDePaquete
begin
   while (buffer_esté_lleno) and (Paquetes>MaxPaquetes) do
   begin
      {No hacer nada, pues me pasé del ancho de banda}
      Application.ProccessMessage;
   end;
end;

JXJ 13-08-2008 22:49:17

Gracias
duilioisola

eso que dices no se me habia ocurrido.


pense que la cosa va por lo de definir el buffer size


La franja horaria es GMT +2. Ahora son las 03:59:23.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi