este es el codigo de el servidor
Código Delphi
[-]
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
var
sMensaje: String;
fStream : TFileStream;
begin
sMensaje := AContext.Connection.Socket.ReadLn;
Mensaje.Lines.Add( 'De: ' + AContext.Binding.PeerIP );
Mensaje.Lines.Add( 'Mensaje: ' + sMensaje );
FStream := TFileStream.Create(
ExtractFilePath(Application.ExeName) + 'servidor.jpg'
, fmCreate);
try
AContext.connection.IOHandler.ReadStream(fstream);
finally
AContext.connection.Disconnect;
end;
FreeAndNil(FStream);
end;
y este es el codigo de mi cliente
Código Delphi
[-]var
SrcWindow: THandle;
SrcDC: HDC;
Bitmap: TBitmap;
Jpg: TJPEGImage;
Stream: TMemoryStream;
Width, Height: Integer;
begin
contador:=contador+1;
SrcWindow:= GetDesktopWindow;
if SrcWindow <> 0 then
begin
SrcDC:= GetDC(SrcWindow);
if SrcDC <> 0 then
begin
Bitmap:= TBitmap.Create;
Jpg:= TJPEGImage.Create;
try
Width:= GetSystemMetrics(SM_CXSCREEN);
Height:= GetSystemMetrics(SM_CYSCREEN);
Bitmap.Width:= Width;
Bitmap.Height:= Height;
StretchBlt(Bitmap.Canvas.Handle,0,0,Bitmap.Width,Bitmap.Height,
SrcDC,0,0,Width,Height,SRCCOPY);
Jpg.CompressionQuality:= 40;
Jpg.Assign(Bitmap);
Jpg.Compress;
Image1.Picture.Assign(Jpg);
Stream:= TMemoryStream.Create;
try
Jpg.SaveToStream(Stream);
IdTCPClient1.Host:='127.0.0.1'; IdTCPClient1.Port:=8080;
IdTCPClient1.Connect;
IdTCPClient1.Socket.WriteLn(mensaje.text);
IdTCPClient1.IOHandler.Write(Stream, 0,true);
finally
Stream.Free;
end;
finally
Bitmap.Free;
Jpg.Free;
ReleaseDC(SrcWindow,SrcDC);
end;
end;
end;
IdTCPClient1.Disconnect;
Como se daran cuenta en este codigo, tomo la impresion de pantalla... y la deposito en un image para visualizar lo que envio... todo esta bien y aparentemente si recibe el stream mi IDTCPServer... pero jamas la puedo visualizar... hubo un momento en que si cerraba o liberaba el stream... pero segui trabajando y moviendo codigo y resulta que al final ya no funciona =( ... y hasta donde recuerdo esa era la base