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 !