Ver Mensaje Individual
  #1  
Antiguo 14-01-2009
jomanmoz jomanmoz is offline
Miembro
 
Registrado: ago 2006
Posts: 21
Reputación: 0
jomanmoz Va por buen camino
enviar imagen con sockets

Hola. comañeros del foro.

He trabajado con sockets pero solo envio y recibo texto, como si fuese un chat. ha hora quisisera saber la forma de enviar y recivir imagenes jpg o bitmap.
para ser mas claro en lo que necesito, desearia que el socketServidor enviara la imagen contenida en un Timage, y el socketCliente la recibiera para mostrarla en otro Timage.
Se que para esto se envia un Stream, el codigo que he encontrado para enviar el stream es el siguiente:

al dra clic a un boton se ejecutaria el siguiente codigo:

procedure TForm1.Button2Click(Sender: TObject);
var
mystream: TMemoryStream;
begin
mystream:= TMemorystream.Create;
Image1.Picture.Bitmap.SaveToStream(mystream);
Cliente.socket.SendStream(mystream);
end;

Ha hora necesitaria el codigo faltante para que el SocketCliente reciba el stream y mostrarlo en un Timage.

he encontrado codigos pero no me an funcionado, por ejemplo este recibe el Stream y crea un archivo Bmp, pero no me funciona.

procedure TForm1.ServerClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
nReceived:integer;
Buffer: array [0..99999] of byte;
Stream:TMemoryStream;
begin
//Esta es la parte que se encarga del stream
Stream := TMemoryStream.Create;
Screen.Cursor := crHourglass;
try
while True do
begin
nReceived := Socket.ReceiveBuf (Buffer, sizeof (Buffer));
if nReceived <= 0 then//<--Si ya no se reciben datos, es decir, al terminar la transferencia
Break
else
Stream.Write (Buffer, nReceived);//<--Vamos rellenando el stream
Sleep (200);
end;
Stream.Position := 0;
stream.SaveToFile('c:\imagen.bmp');
finally
end;
Stream.Free;
Screen.Cursor := crDefault;
exit;
end;

Mi idea no es almacenar el stream en archivo, sino solo mostrar el stream en un Timagen. Alguien podria ayudarme.
Responder Con Cita