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

📄 abstuser.pas

📁 flash视频源码 flash视频源码
💻 PAS
字号:
unit abstuser;

interface

uses Classes, WinSock;

type TUser = class(TThread)
      private
       { Private-Deklarationen }
       Data:string;
      protected
       procedure Execute; override;
       procedure IncommingData(st:string); virtual; abstract;
      public
       IP:TInAddr;
       Socket:TSocket;
       procedure Close;
       procedure Send(st:string);
       constructor Create;
     end;

implementation

{ Wichtig: Methoden und Eigenschaften eines Objekts in der VCL
           k鰊nen nur in einem Methodenaufruf mit SYNCHRONIZE
           genutzt werden, z.B.

      Synchronize(UpdateCaption);

  und UpdateCaption k鰊nte sein,

    procedure TUser.UpdateCaption;
    begin
      Form1.Caption := 'Updated in einem Thread';
    end; }

{ TUser }

uses Windows,misc;

constructor TUser.Create;
  begin
    inherited Create(true);
    Data:='';
    FreeOnTerminate:=true;
  end;

procedure TUser.Close;
  begin
    Terminate;
    CloseSock(Socket);
  end;

procedure TUser.Execute;
var st:string;res,i:Integer;
  begin
    { Plazieren Sie den Thread code hier }
    repeat
      SetLength(st,1000);
      res:=recv(Socket,st[1],1000,0);

      if res>0 then
        begin
          SetLength(st,res);
          Data:=Data+st;

          res:=Pos(#31,Data);
          while res>0 do
            begin
              st:=Copy(Data,1,res-1);
              Delete(Data,1,res);
              EnterCriticalSection(synchronizer);
              IncommingData(st);
              LeaveCriticalSection(synchronizer);
              res:=Pos(#31,Data);
            end;
        end else Close;
    until Terminated;
  end;

procedure TUser.Send(st:string);
  begin
    st:=st+#31;
    WinSock.send(Socket,st[1],Length(st),0);
  end;

end.

⌨️ 快捷键说明

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