|
用delphi实现冰河的远程屏幕操作功能(15) end;
procedure TClientForm.ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); begin Stat[0] := ('Error: ' + IntToStr(ErrorCode)); ErrorCode := 0;
if not Socket.Connected then StopAnim; end;
procedure TClientForm.Exit1Click(Sender: TObject); begin Close; end;
procedure TClientForm.Connect1Click(Sender: TObject); begin Image1.Picture.Bitmap := nil; Timer1Timer(nil); end;
procedure TClientForm.SendMsg(MsgNum: integer; const MsgData: string; Socket: TCustomWinSocket); var s : string; begin Log(Format('%-7s #%2.2d', ['Send', MsgNum]));
Stat[0] := Format('Sending Message (Len = %1.0n)', [Length(MsgData)+0.0]);
s := IntToByteStr(MsgNum) + IntToByteStr(Length(MsgData)) + MsgData; Socket.SendText(s); NumSend := NumSend + Length(s); UpdateStats;
Inc(NeedReply); StartAnim; end;
procedure TClientForm.UpdateStats; begin // Stat[0] := Format('Sent: %1.0n', [NumSend]); // Stat[1] := Format('Recv: %1.0n', [NumRec]); end;
procedure TClientForm.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); var s : string; msg : integer; len : integer; PerStr : string; tdif : double; cps : string; begin // WaitImage.Hint := 'Data Last Received:' + #13#10 + CurTime; s := Socket.ReceiveText; NumRec := NumRec + Length(s); UpdateStats;
if CurMsg = '' then LastRec := GetTickCount; CurMsg := CurMsg + s;
if Length(CurMsg) >= 8 then begin Move(CurMsg[1], msg, sizeof(integer)); Move(CurMsg[5], len, sizeof(integer)); PerStr := Format('(%1.0n%%)', [Length(CurMsg) / (len + 8.0) * 100.0]); tdif := (GetTickCount - LastRec) / 1000.0; if tdif > 0.5 then cps := Format('%1.0n cps', [Length(CurMsg) / tdif]) else cps := ''; Stat[0] := Format('Received: %1.0n of %1.0n %s %s', [Length(CurMsg) + 0.0, len + 8.0, PerStr, cps]);
|