procedure TForm1.Button1Click(Sender: TObject);
begin
globvarmess:=1;
{1} QueryMemo.Lines.Add(DateTimeToStr(Now)+ '
Uhr:out--> //networkscan');
{2} QueryMemo.SelStart :=lengthqueryvar;
// Startposition der Markierung
{3} QueryMemo.SelLength := 24 ;
// Ende der Markierung
{4} QueryMemo.SelAttributes.Style := [fsbold];
// Markierung fett drucken
{5} QueryMemo.SelLength := 0;
// Markierung beenden
{6} lengthQueryVar:=Length(Querymemo.Text);
Serversocket1.Socket.Connections[0].SendText('
//networkscan');
end;
procedure TForm1.Button2Click(Sender: TObject);
var
iLen: Integer;
Bfr: Pointer;
begin
globvarmess:=2;
serversocket1.Socket.Connections[0].SendText('
//screen');
end;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
if Globvarmess=1
then begin
Richedit2.Text:=Receivetext;Richedit2.Text:=Copy(Richedit2.Text,6,length(Richedit2.Text)) ;Listboxnetscan.Items:=Richedit2.Lines
end;
if Copy(ReceiveText,1,3)='
inc'
then begin
QueryMemo.Lines.Add(DateTimeToStr(Now)+'
Uhr:'+ReceiveText);
{2} QueryMemo.SelStart :=lengthqueryvar;
// Startposition der Markierung
{3} QueryMemo.SelLength := 24 ;
// Ende der Markierung
{4} QueryMemo.SelAttributes.Style := [fsbold];
// Markierung fett drucken
{5} QueryMemo.SelLength := 0;
// Markierung beenden
{6} lengthQueryVar:=Length(Querymemo.Text);
end else
if Globvarmess=2
then begin
if not assigned(FStream)
then // noch keine Übertragung bisher, Stream ist nil
begin
// Ok, dann müssten wir erstmal schauen und die Grösse des folgenden Streams
// auslesen. Dazu erstmal schauen, ob wir die Grösse bisher überhaupt komplett empfangen haben...
if ServerSocket1.Socket.Connections[0].ReceiveLength >= SizeOf(fStreamDataSize)
then
begin
// dann nun die Grösse einlesen
ServerSocket1.Socket.Connections[0].ReceiveBuf(fStreamDataSize, SizeOf(fStreamDataSize));
// dann Stream anlegen
FStream := TMemoryStream.Create;
end;
// else
// Exit; // ok, dann weiter warten, bis wir die Grösse komplett empfangen haben (Code unnötig)
end;
// ok, hier nun, wenn der Stream existiert, einlesen der Daten die empfangen wurden und Schreiben in den Stream
if assigned(FStream)
then
begin
iLen := ServerSocket1.Socket.Connections[0].ReceiveLength;
// Ok, nur die Daten auch empfangen, die zu unserem Stream gehören. Also schauen wieviel wir noch vom Stream einlesen
// müssen...
iLen := min(fStreamDataSize, iLen);
GetMem(Bfr, iLen);
try
ServerSocket1.Socket.Connections[0].ReceiveBuf(Bfr^, iLen);
// fStreamDataSize := fStreamDataSize - FStream.Write(Bfr^, iLen); // beides gleich - schreiben der Daten
Dec(fStreamDataSize, FStream.
Write(Bfr^, iLen));
// und Variable fStreamDataSize runterzählen um die // empfangenen und geschriebenen Daten...
finally
FreeMem(Bfr);
end;
label13.Caption:=inttostr(fStreamDataSize);
if fStreamDataSize = 0
then // alles empfangen?
begin
Label13.Caption:='
x2';
// Positionszeiger zurücksetzen
FStream.Position := 0;
Label13.Caption:='
x3';
// Image einlesen
Image1.Picture.Bitmap.LoadFromStream(FStream);
Label13.Caption:='
x4';
// MemoryStream freigeben und auf nil setzen (wegen den If Assigned() Abfragen)
FreeAndNil(FStream);
Label13.Caption:='
x5';
end;
end;
// wenn er hier ankommt und ReceiveLength() ist immernoch > 0, dann sind noch Daten im Stream, die aber nicht
// mehr zum Bild gehören - oder - wir haben die Grösse der Streamdaten noch nicht empfangen.
end;
end;