⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uclientthread.~pas

📁 UDP 传输过程中
💻 ~PAS
字号:
unit UClientThread;

interface
uses SysUtils, Classes,IdTCPServer;

TYPE
  TClientInfo = Class(TCollectionItem)
  private
      FPeerThread: TIdPeerThread;
      FPeerIP:string;
      FPeerUDPPort:string;
      FPackageSize:integer;
      FSendCountPerSecond:integer;
      FLoginTIme:TDateTime;
      FWorkThread:TThread;
      FState:string;
  public
      constructor Create(ACollection: TCollection); override;
      destructor Destroy; override;
      procedure Init(APeerThread:TIdPeerThread;APeerIP:string;
                     APeerUDPPort:string;APackageSize:integer;
                     ASendCountPerSecond:integer);
      procedure Start;
      procedure Pause;
      procedure Continue;
      procedure Stop;
  published
       property PeerThread: TIdPeerThread read FPeerThread;
       property PeerIP:string read FPeerIP write FPeerIP;
       property PeerUDPPort:string read FPeerUDPPort write FPeerUDPPort;
       property PackageSize:integer read FPackageSize write FPackageSize;
       property SendCountPerSecond:integer read FSendCountPerSecond write FSendCountPerSecond;
       property LoginTIme:TDateTime read FLoginTIme write FLoginTIme;
       property WorkThread:TThread read FWorkThread write FWorkThread;
  end;

  TClientList = class(TOwnedCollection)
  protected
    FServer: TIdTCPServer;
    //
    function GetItem(AIndex: Integer): TClientInfo;
    procedure SetItem(AIndex: Integer; const AValue: TClientInfo);
  public
    function Add(APeerThread:TIdPeerThread;APeerIP:string;
                 APeerUDPPort:string;APackageSize:integer;ASendCountPerSecond:integer): TClientInfo;
    constructor Create(AServer: TIdTCPServer); reintroduce;
    //
    property Items[AIndex: Integer]: TClientInfo read GetItem write SetItem;
    property Server: TIdTCPServer read FServer;
  end;


implementation

//================================================================================
{ TClientInfo }


constructor TClientInfo.Create(ACollection: TCollection);
begin
    inherited Create(ACollection);
    FPeerThread:=nil;
    FPeerIP:='';
    FPeerUDPPort:='';
    FPackageSize:=0;
    FSendCountPerSecond:=0;
    FLoginTIme:=TDateTime(0);
    FWorkThread:=nil;
    FState:='登陆';
end;

destructor TClientInfo.Destroy;
begin
    if Assigned(FWorkThread) then
    begin
        FWorkThread.Terminate;
        FreeAndNil(FWorkThread);
    end;
    inherited;
end;

procedure TClientInfo.Init(APeerThread: TIdPeerThread; APeerIP,
  APeerUDPPort: string; APackageSize, ASendCountPerSecond: integer);
begin
    FPeerThread:=APeerThread;
    FPeerIP:=APeerIP;
    FPeerUDPPort:=APeerUDPPort;
    FPackageSize:=APackageSize;
    FSendCountPerSecond:=ASendCountPerSecond;
    FLoginTIme:=now;
    FWorkThread:=nil;
    FState:='登陆';
end;
procedure TClientInfo.Start;
begin
    if not Assigned(FWorkThread) then
    begin
        //Create the thread
    end;
    FWorkThread.Resume;

end;
procedure TClientInfo.Pause;
begin
    if Assigned(FWorkThread) and (not FWorkThread.Suspended) then
        FWorkThread.Suspend;
end;
procedure TClientInfo.Continue;
begin
    if Assigned(FWorkThread) and (FWorkThread.Suspended) then
        FWorkThread.Resume;
end;

procedure TClientInfo.Stop;
begin
    if not Assigned(FWorkThread) then exit;
    FWorkThread.Terminate;
    if Assigned(FWorkThread) and (FWorkThread.Suspended) then
        FWorkThread.Resume;
end;


//====================================================================================


{ TClientList }

function TClientList.Add(APeerThread: TIdPeerThread; APeerIP,
  APeerUDPPort: string; APackageSize,ASendCountPerSecond: integer): TClientInfo;
begin
    Result:=TClientInfo(inherited Add);
    Result.PeerThread:=APeerThread;
    Result.
    Result:=TClientInfo.Create(self,APeerThread,APeerIP,APeerUDPPort,APackageSize,ASendCountPerSecond);
    Added(Result);
end;

constructor TClientList.Create(AServer: TIdTCPServer);
begin

end;

function TClientList.GetItem(AIndex: Integer): TClientInfo;
begin

end;

procedure TClientList.SetItem(AIndex: Integer; const AValue: TClientInfo);
begin

end;

end;
end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -