Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.06;
Скачать: CL | DM;

Вниз

Server и Client - помогите...   Найти похожие ветки 

 
BlackSun ©   (2003-01-09 17:04) [0]

НИже прилагаются исходники сервера и клиента. Там где косяки, отмечено звездочками...
Суть, послать скриншот по сети. Скриншо приходит, но косяки указаны ниже.
unit server_;

interface

var
Form1: TForm1;
DeskTopDC: HDc;
DeskTopCanvas: TCanvas;
DeskTopRect: TRect;
image1:TImage;
stream1:tmemorystream;
j:tjpegimage;

implementation

{$R *.DFM}
procedure sendshot(Socket: TCustomWinSocket);
begin
DeskTopDC := GetWindowDC(GetDeskTopWindow);
DeskTopCanvas := TCanvas.Create;
DeskTopCanvas.Handle := DeskTopDC;
DeskTopRect := Rect(0,0,Screen.Width,Screen.Height);
image1:=TImage.Create(nil);
image1.Width:=screen.width;
image1.height:=screen.height;
image1.canvas.CopyRect(DeskTopRect,DeskTopCanvas,DeskTopRect);
j:=TJPEGImage.create;
j.assign(image1.Picture.bitmap);
ReleaseDC(GetDeskTopWindow,DeskTopDC);
stream1:=TMemoryStream.Create;
j.SaveToStream(stream1);
stream1.position:=0;
**********************почему у меня работает только Connections[1], а не **********************Connections[0]? Как узнать, какой именно?
Form1.ServerSocket1.Socket.Connections[1].Sendtext(inttostr(stream1.size)+#0);
form1.ServerSocket1.Socket.Connections[1].SendStream(stream1);
image1.free;
desktopcanvas.free;
j.free;
**********здесь прога вылетает с ошибкой, при освобождении памяти stream1
stream1.free;
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var i,x,y,code:integer;
s:string;
begin
s:=socket.receivetext;
if s = "send" then sendshot(socket);
end;

procedure TForm1.ServerSocket1ClientError(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
errorcode:=0;
end;

end.
*******************************Клиент
unit client_;
implementation
uses scrr;
{$R *.DFM}
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
clientsocket1.active:=true;
ClientSocket1.Open;
end;

procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
scr.show;
clientsocket1.socket.sendtext("send");
end;

procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
clientsocket1.close
end;

procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var
s,s1:string;
i:longint;
begin
label1.Caption:="Читаем";
s:=socket.receivetext;
if not rec then
begin
setlength(s1,strlen(pchar(s))+1);
strlcopy(@s1[1],pchar(s),length(s1)-1);
datasize:=strtoint(s1);
data1:=tmemorystream.create;
delete(s,1,length(s1));
rec:=true;
end;
data1.write(s[1],length(s));
if data1.size=datasize then
begin
data1.position:=0;
j:=tjpegimage.create;
j.loadfromstream(data1);
scr.image1.Height:=j.Height;
scr.image1.Width:=j.Width;
scr.image1.Canvas.Draw(0,0,j);
j.free;
rec:=false;
data1.free;
end;
label1.Caption:="Закончили чтение...";
end;

end.


 
Verg ©   (2003-01-09 17:23) [1]

Для начала:

> stream1.free;


Note: The Stream passed as a parameter to SendStream becomes “owned” by the windows socket object. The Windows socket object frees the stream when it is finished with it. Do not attempt to free the stream after it has been passed as a parameter.


 
Verg ©   (2003-01-09 17:32) [2]


> **********************почему у меня работает только Connections[1],
> а не **********************Connections[0]? Как узнать, какой
> именно?
> Form1.ServerSocket1.Socket.Connections[1].Sendtext(inttostr(stream1.size)+#0);
> form1.ServerSocket1.Socket.Connections[1].SendStream(stream1);


А не надо "узнавать". Тебе его явно передают в параметре процедуры SendShot и называется он Socket. Т.о.,

Socket.Sendtext(inttostr(stream1.size)+#0);
Socket.SendStream(stream1);


 
igorkuz ©   (2003-01-16 12:07) [3]

Нельзя освобождать пока не отправишь
Освобождай в OnWrite



Страницы: 1 вся ветка

Текущий архив: 2003.03.06;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.022 c
14-17291
SPeller
2003-02-11 19:47
2003.03.06
---|Ветка была без названия|---


1-17006
SergeyND
2003-02-24 23:36
2003.03.06
TRichEdit


1-17156
Шишкин Илья
2003-02-23 13:23
2003.03.06
Как изменить курсоры мыши?


14-17259
Wonder
2003-02-14 12:32
2003.03.06
Я плакаль :)))


1-17121
SiD_
2003-02-21 17:36
2003.03.06
Cортировка файлов и папок