Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Problemas al recibir datos largos con Indy (https://www.clubdelphi.com/foros/showthread.php?t=72068)

fide_uci 26-01-2011 15:03:47

Problemas al recibir datos largos con Indy
 
Hola amigos. Tengo un problema que necesito solucionar pero no tengo idea de como hacerlo. Me sucede lo siguiente. Tengo un socket conectado a un servidor de jabber recibiendo todos los XML que este me envia. El problema es que cuando por ejemplo, solicitu la lista de contactos, me la manda en dos peticiones, cuando deberia de ser una. O sea que por alguna razon esta picando los datos en dos partes. Esto es un gran problema para mi ya que necesito esos paquetes completos y no fragmentados. Alguien tiene la idea de por que sucede esto?. Aqui les dejo un poco de codigo.

Dentro de un hilo que he creado, que ejecuto cuando el TCPClient se conecta tengo esto.

Código Delphi [-]
procedure TClientHandleThread.Execute;
begin
 with frmMain do
  begin
    while not Terminated do
    begin
      if not TCPClient.Connected then
        Terminate
      else
      try
          if not TCPClient.IOHandler.InputBufferIsEmpty then
          begin
            vg_datos_socket := TCPClient.IOHandler.InputBuffer.ExtractToString(TCPClient.IOHandler.InputBuffer.Size, TIdTextEncoding.UTF8, TIdTextEncoding.UTF8);
            Synchronize(HandleInput);
          end;
      except
      end;
    end;
  end;
end;

El IOHandler que le tengo asignado al TCPClient es un TidSSLIOHandlerSocket. Por que la conexion es sobre SSL hacia mi servidor. Pero por ejmplo cuando los datos se pasan de 16 KB me los pica en varios pedazos de 16 KB cada uno. En dependencia del tamaño claro. ALguna idea de como puedo resolver esto?

Haa, HandleInput es una funcion que tengo que es la que procesa lo que me llega. Pero repito, los paquetes grandes estan llegando en pedasos y eso me da mucho problema. Gracias desde ya !

fide_uci 02-02-2011 14:57:42

Alguna idea please ?

fide_uci 02-02-2011 19:15:00

Estoy por crees que es un bug de la Indy 10. Espero que en un futuro queden claras cosas como estas !


La franja horaria es GMT +2. Ahora son las 05:42:14.

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