clientsocket1.Socket.SendText(‘gets‘); //发送申请,通知服务端需要屏幕图象 end;   procedure TForm1.ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket); begin caption:=‘连接到‘+edit1.text; end;   procedure TForm1.ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); begin caption:=‘连接‘+edit1.text+‘失败‘; showmessage(edit1.text+#13#10+‘未开机或未安装服务程序‘); errorcode:=0;   end;   procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); var buffer:array [0..10000] of byte; //设置接收缓冲区 len:integer; ll:string; b:tbitmap; j:tjpegimage; begin if c=0 then //C为服务端发送的字节数,如果为0表示为尚未开始图象接收 begin ll:=socket.ReceiveText; c:=strtoint(ll); //设置需接收的字节数 clientsocket1.Socket.SendText(‘okok‘); //通知服务端开始发送图象 end else begin //以下为图象数据接收部分 len:=socket.ReceiveLength; //读出包长度 socket.ReceiveBuf(buffer,len); //接收数据包并读入缓冲区内 m.Write(buffer,len); //追加入流M中 if m.Size>=c then //如果流长度大于需接收的字节数,则接收完毕 begin m.Position:=0; b:=tbitmap.Create; j:=tjpegimage.Create; try j.LoadFromStream(m); //将流M中的数据读至JPG图像对象J中 b.Assign(j); //将JPG转为BMP Image1.Picture.Bitmap.Assign(b); //分配给image1元件 finally //以下为清除工作 b.free; j.free; clientsocket1.Active:=false; clientsocket1.Active:=true; m.Clear; c:=0; end; end; end;     end;   procedure TForm1.FormCreate(Sender: TObject); begin m:=tmemorystream.Create;   end;   procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin m.free; ClientSocket1.Close; end;   end.     服务端程序: unit smain;   interface   uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ScktComp,jpeg;   type TForm1 = class(TForm) ServerSocket1: TServerSocket; procedure ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end;   var Form1: TForm1; m1:tmemorystream;   implementation   {$R *.DFM}   procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); var s,s1:string; desk:tcanvas; bitmap:tbitmap; jpg:tjpegimage; begin s:=socket.ReceiveText; if s=‘gets‘ then //客户端发出申请 begin bitmap:=tbitmap.Create; jpg:=tjpegimage.Create; desk:=tcanvas.Create; //以下代码为取得当前屏幕图象 desk.Handle:=getdc(hwnd_desktop); m1:=tmemorystream.Create; //初始化流m1,在用sendstream(m1)发送流后, //它将保留到socket对话结束, //不能用手工free掉,否则会触发异常 with bitmap do begin width:=screen.Width; height:=screen.Height; canvas.CopyRect(canvas.cliprect,desk,desk.cliprect); end; jpg.Assign(bitmap); //将图象转成JPG格式 jpg.SaveToStream(m1); //将JPG图象写入流中 jpg.free; m1.Position:=0; s1:=inttostr(m1.size); Socket.sendtext(s1); //发送图象大小 end; if s=‘okok‘ then //客户端已准备好接收图象 begin m1.Position:=0; Socket.SendStream(m1); //发送JPG图象 end;   end;   procedure TForm1.FormCreate(Sender: TObject); begin ServerSocket1.open; end;   end. 
看看对你的程序是不是有些帮助