napisalem sobie serwerek i klienta... jednym z wielu polecen jest screen. wysylam polecenie, server robi screena i przesyla go do klienta... i tutaj zaczynaja sie dziac dziwne rzeczy... otoz mam takie cos w ClientRead ktore odbiera obraz...
if not Downloading then begin
Socket.ReceiveBuf(StreamHeader, SizeOf(StreamHeader));
ImgStream := TMemoryStream.Create;
ImgStream.Position := 0;
ImgSize := StreamHeader.Size;
Downloading := True;
Exit;
end;
//Zapisywanie bufora
Received := Socket.ReceiveBuf(Buffer, SizeOf(Buffer)-1);
ImgStream.write(Buffer, Received);
if ImgStream.Size >= ImgSize then begin
ImgStream.SaveToFile('C:\screen.jpg');
img.Picture.LoadFromFile('C:\screen.jpg');
ImgStream.free;
Received:=0;
ImgSize:=0;
Downloading:=false;
end;
i to normalnie dziala jezeli nic poza tym nie ma... czyli w Clientread jest tylko jedna procedurka odbioru danych(bufforu). Niestety ja mam rowniez w ClientRead rzeczy od innych funkci. Komendy rozdzielam z jednego tekstu:
s := Socket.ReceiveText;
try
cmd := copy(s,1,pos(#31,s)-1);
delete(s,1,pos(#31,s));
lparam := copy(s,1,pos(#31,s)-1);
delete(s,1,pos(#31,s));
rparam := copy(s,1,pos(#31,s)-1);
delete(s,1,pos(#31,s));
except
a wywoluje
if cmd='wiad' then
showmessage('asdsfsafd') else;
i gdy w ClientRead mam i rzeczy do screena i inne komendy to wtedy nie dziala w ogóle PrintScreen :( Normalnie nie chce odebrac go od servera...
Moje pytanie jest nastepujace... Jak pogodzic procedure screena z pozostalymi ?