Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2003.03.06;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.009 c
14-17386
Ромн
2003-02-19 09:15
2003.03.06
возможно ли обеспечить совместный доступ коднму Excel файлу


8-17201
_toltec
2002-11-24 02:17
2003.03.06
GIF


1-17030
Checist [root]
2003-02-25 10:14
2003.03.06
Поиск файла в сети


7-17425
ShadowFromXZone
2003-01-07 00:37
2003.03.06
Ребята вот какой возник вопрос.... Надо запретить только копирова


14-17355
Artem Gazizov
2003-02-15 23:01
2003.03.06
страны мира





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский