|
用delphi实现冰河的远程屏幕操作功能(4) LoggedOn := False; UpdateStats; Log('Startup at ' + CurTime); end;
procedure TServerForm.UpdateStats; begin ConLab.Caption := IntToStr(ServerSocket1.Socket.ActiveConnections); NumRecLab.Caption := Format('%1.0n', [NumRec]); NumSendLab.Caption := Format('%1.0n', [NumSend]); NumErrLab.Caption := IntToStr(NumError); end;
procedure TServerForm.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); var s : string; begin Log(Format('%-20s %s', ['Recv Data', Socket.RemoteAddress]));
LastRecLab.Caption := CurTime; s := Socket.ReceiveText; NumRec := NumRec + Length(s); UpdateStats;
CurMsg := CurMsg + s;
while IsValidMessage(CurMsg) do begin s := TrimFirstMsg(CurMsg); ProcessMessage(s, Socket); end; end;
procedure TServerForm.ServerSocket1ClientConnect(Sender: TObject; Socket: TCustomWinSocket); begin Log(Format('%-20s %s', ['Connect', Socket.RemoteAddress]));
ViewMode := vmColor4; CompMode := clDefault; SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_NORMAL); UpdateStats; end;
procedure TServerForm.ServerSocket1ClientDisconnect(Sender: TObject; Socket: TCustomWinSocket); begin Log(Format('%-20s %s', ['Disconnect', Socket.RemoteAddress]));
UpdateStats; end;
procedure TServerForm.ServerSocket1ClientError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); begin Log(Format('%-20s %d', ['Error', ErrorCode]));
ErrorCode := 0; Inc(NumError); UpdateStats; end;
procedure TServerForm.Log(const s: string); begin LogList.ItemIndex := LogList.Items.Add(s); end;
procedure TServerForm.ProcessMessage(const Msg: string; Socket: TCustomWinSocket); var MsgNum, x: integer; rc : integer; Data : string; bmp : TBitmap; tmp : string; begin CurSocket := Socket; Move(Msg[1], MsgNum, sizeof(integer)); Data := Copy(Msg, 9, Length(Msg));
|