e DoWrite; protected procedure DoTerminate; override; procedure Execute; override; procedure ClientExecute; virtual; procedure Event(SocketEvent: TSocketEvent); virtual; procedure Error(ErrorEvent: TErrorEvent; var ErrorCode: Integer); virtual; procedure HandleException; virtual; procedure ReActivate(ASocket: TServerClientWinSocket); function StartConnect: Boolean; function EndConnect: Boolean; public constructor Create(CreateSuspended: Boolean; ASocket: TServerClientWinSocket); destructor Destroy; override;
property ClientSocket: TServerClientWinSocket read FClientSocket; property ServerSocket: TServerWinSocket read FServerSocket; property KeepInCache: Boolean read FKeepInCache write FKeepInCache; property Data: Pointer read FData write FData; end;} file://*****************************************************
TServerWinsocket= class(TCustomWinSocket) private FServerType: TServerType; FConnections: TList; // FServerAcceptThread: TServerAcceptThread; FListLock: TCriticalSection; FOnGetSocket: TGetSocketEvent; FOnClientConnect: TSocketNotifyEvent; FOnClientDisconnect: TSocketNotifyEvent; FOnClientRead: TSocketNotifyEvent; FOnClientWrite: TSocketNotifyEvent; FOnClientError: TSocketErrorEvent; procedure AddClient(AClient: TServerClientWinSocket);//向TLIST添加连接 procedure RemoveClient(AClient: TServerClientWinSocket); procedure ClientEvent(Sender: TObject; Socket: TCustomWinSocket; SocketEvent: TSocketEvent);//响应客户SOCKET事件 procedure ClientError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); function GetActiveConnections: Integer; file://获取连接数 function GetConnections(Index: Integer): TCustomWinSocket;//获取指定连接 protected // procedure Accept(Socket: TSocket); override;
procedure SetServerType(Value: TServerType); function GetClientSocket(Socket: TSocket): TServerClientWinSocket; dynamic; procedure ClientRead(Socket: TCustomWinSocket); dynamic; procedure ClientWrite(Socket: TCustomWinSOcket); dynamic; procedure ClientConnect(Socket: TCustomWinSOcket); dynamic; procedure ClientDisconnect(Socket: TCustomWinSOcket); dynamic; procedure ClientErrorEvent(Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); dynamic; public constructor Create(ASocket: TSocket); destructor Destroy; override; procedure Listen(var Name, Address, Service: string; Port: Word; QueueSize: Integer); procedure Accept(Socket:TSocket);override; property ActiveConnections: Integer read GetActiveConnections; property Connections[Index: Integer]: TCustomWinSocket read GetConnections; property ServerType: TServerType read FServerType write SetServerType; property OnGetSocket: TGetSocketEvent read FOnGetSocket write FOnGetSocket; property OnClientConnect: TSocketNotifyEvent read FOnClientConnect write FOnClientConnect; property OnClientDisconnect: TSocketNotifyEvent read FOnClientDisconnect write FOnClientDisconnect; property OnClientRead: TSocketNotifyEvent read FOnClientRead write FOnClientRead; property OnClientWrite: TSocketNotifyEvent read FOnClientWrite write FOnClientWrite; property OnClientError: TSocketErrorEvent read FOnClientError write FOnClientError; end;
TMAbstractSocket = class(TComponent) private FActive: Boolean; FPort: Integer; FAddress: string; FHost: string; FService: string; procedure DoEvent(Sender: TObject; Socket: TCustomWinSocket; SocketEvent: TSocketEvent); procedure DoError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); protected procedure Event(Socket: TCustomWinSocket; SocketEvent: TSocketEvent); virtual; abstract; procedure Error(Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); virtual; abstract; procedure DoActivate(Value: Boolean); virtual; abstract; procedure InitSocket(Socket: TCustomWinSocket); procedure Loaded; override; procedure SetActive(Value: Boolean); procedure SetAddress(Value: string); procedure SetHost(Value: string); procedure SetPort(Value: Integer); procedure SetService(Value: string); property Active: Boolean read FActive write SetActive; property Address: string read FAddress write SetAddress; property Host: string read FHost write SetHost; property Port: Integer read FPort write SetPort; property Service: string read FService write SetService; public procedure Open; procedure Close; end;
TMCustomSocket = class(TMAbstractSocket) private FOnLookup: TSocketNotifyEvent; FOnConnect: TSocketNotifyEvent; FOnConnecting: TSocketNotifyEvent; FOnDisconnect: TSocketNotifyEvent; FOnListen: TSocketNotifyEvent; FOnAccept: TSocketNotifyEvent; FOnRead: TSocketNotifyEvent; FOnWrite: TSocketNotifyEvent; FOnError: TSocketErrorEvent; protected procedure Event(Socket: TCustomWinSocket; SocketEvent: TSocketEvent); override; procedure Error(Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); override; property OnLookup: TSocketNotifyEvent read FOnLookup write FOnLookup; property OnConnecting: TSocketNotifyEvent read FOnConnecting write FOnConnecting; property OnConnect: TSocketNotifyEvent read FOnConnect write FOnConnect; property OnDisconnect: TSocketNotifyEvent read FOnDisconnect write FOnDisconnect; property OnListen: TSocketNotifyEvent read FOnListen write FOnListen; property OnAccept: TSocketNotifyEvent read FOnAccept write FOnAccept; property OnRead: TSocketNotifyEvent read FOnRead write FOnRead; property OnWrite: TSocketNotifyEvent read FOnWrite write FOnWrite; property OnError: TSocketErrorEvent read FOnError write FOnError; end;
TMClientSocket = class(TMCustomSocket) private FClientSocket: TClientWinSocket; protected procedure DoActivate(Value: Boolean); override; function GetClientType: TClientType; procedure SetClientType(Value: TClientType); public constructor Create(AOwner: TComponent); override; destructor Destroy; override; property Socket: TClientWinSocket read FClientSocket; published property Active; property Address; property ClientType: TClientType read GetClientType write SetClientType; property Host; property Port; property Service; property OnLookup; property OnConnecting; property OnConnect; property OnDisconnect; property OnRead; property OnWrite; property OnError; end;
TMCustomServerSocket = class(TMCustomSocket) protected FServerSocket: TServerWinSocket; procedure DoActivate(Value: Boolean); override; function GetServerType: TServerType; function GetGetSocketEvent: TGetSocketEvent; function GetOnClientEvent(Index: Integer): TSocketNotifyEvent; function GetOnClientError: TSocketErrorEvent; procedure SetServerType(Value: TServerType); procedure SetGetSocketEvent(Value: TGetSocketEvent); procedure SetOnClientEvent(Index: Integer; Value: TSocketNotifyEvent); pro 上一页 [1] [2] [3] [4] [5] [6] [7] 下一页 [Sql Server]改进的ASP备份SQL Server数据库
|