Ver Mensaje Individual
  #12  
Antiguo 25-05-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Reputación: 26
seoane Va por buen camino
Se me ocurre que puedes usar records para hacer lo que te pidieron. Me explico, primero declaras un tipo de record que sera el que utilices para enviar y recibir los trozos:

Código Delphi [-]
type
  Paquete = record
    Tipo: Integer;           // Uso un integer pero un char tambien valdria
    Tamano: Integer;
    Buffer: array[0..1024] of Byte;
  end;

Luego solo tienes que usar ese paquete durante la transmision:
Código Delphi [-]
var
  P: Paquete;
begin
  P.Tipo:= 1; 
  P.Tamano:= stream.Read(P.Buffer,SizeOf(P.Buffer));  
  Cliente.Socket.SendBuf(P,sizeof(P))
end;

Y durante la recepcion
Código Delphi [-]
var
  P: Paquete;
begin
  Socket.ReceiveBuf(P, Sizeof(P));
  // Si lo quisieramos guardar en un stream
  stream.WriteBuffer(P.Buffer, P.Tamano);
end;

El unico problema es que si el ultimo paquete no lo llenamos por completo, estaremos enviando mas bytes de los necesarios, pero como tambien enviamos el tamaño ese no seria un problema. Y es enormemente mas sencillo que andar haciendo malabares con punteros

¿que te parece?

Última edición por seoane fecha: 25-05-2006 a las 21:43:36.
Responder Con Cita