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

📄 msgconnection.old.pas

📁 Delphi MsgCommunicator 2-10 component.I ve used, really good job. can be Server-Client message appl
💻 PAS
📖 第 1 页 / 共 5 页
字号:
  public
  end;// TMsgServerSessionThread



////////////////////////////////////////////////////////////////////////////////
//
// TMsgServerListenerThread
//
////////////////////////////////////////////////////////////////////////////////

  TMsgServerListenerThread = class(TThread)
  private
    FManager:       TMsgServerConnectionManager;
    Buffer:         PChar;
    BufferSize:     Integer;
    FromHost:       String;
    FromPort:       Integer;
    ServerSession:  PMsgSrvrSession;
    SessionFound:   Boolean;
  protected
    procedure Execute; override;
  public
    constructor Create(
                       Manager:       TMsgServerConnectionManager;
                       Buffer:        PChar;
                       BufferSize:    Integer;
                       FromHost:      String;
                       FromPort:      Integer
                       );
    destructor Destroy; override;
  end;// TMsgServerListenerThread



////////////////////////////////////////////////////////////////////////////////
//
// TMsgServerResendRequestThread
//
////////////////////////////////////////////////////////////////////////////////

  TMsgServerResendRequestThread = class(TThread)
  private
    FManager:           TMsgServerConnectionManager;
  protected
    procedure Execute; override;
  public
    constructor Create(
                       Manager:           TMsgServerConnectionManager
                       );
    destructor Destroy; override;
  end;// TMsgServerResendRequestThread



////////////////////////////////////////////////////////////////////////////////
//
// TMsgServerMsgResendRequestThread
//
////////////////////////////////////////////////////////////////////////////////

  TMsgServerMsgResendRequestThread = class(TThread)
  private
    FManager:           TMsgServerConnectionManager;
  protected
    procedure Execute; override;
  public
    constructor Create(
                       Manager:           TMsgServerConnectionManager
                       );
    destructor Destroy; override;
  end;// TMsgServerMsgResendRequestThread

{$ENDIF} // Server


// Procedures and Functions

  function CheckSum(Buffer: PChar; BufferSize: Integer): Integer;

{$IFNDEF MsgCommunicator}
{IFDEF SERVER_VERSION}
{$ENDIF MsgCommunicator}
  function fnIsAuthorizationBufferValid(
                      CryptoInfo: TMsgCryptoInfo;
                      Buffer:     PChar;
                      BufferSize: Integer
                                    ): Boolean;
{$IFNDEF MsgCommunicator}
{ENDIF SERVER_VERSION}
{$ENDIF MsgCommunicator}


implementation

uses
{$IFDEF SERVER_VERSION}
  MsgServer,
{$ENDIF}
{$IFDEF MsgCommunicator}
 {$IFDEF CLIENT_VERSION}
  MsgClient,
 {$ENDIF}
{$ENDIF}
{$IFNDEF MsgCommunicator}
  MsgCommunication,
{$ENDIF}
  MsgComMain;

////////////////////////////////////////////////////////////////////////////////
// CheckSum
////////////////////////////////////////////////////////////////////////////////
function CheckSum(Buffer: PChar; BufferSize: Integer): Integer;
begin
  // Start Point = Pointer(Buffer)+4
  // Count (in Bytes) = BufferSize-4
//  Result := MsgCountCRC(0, PChar(Buffer+4), BufferSize-4)
  Result := 0;
end;


////////////////////////////////////////////////////////////////////////////////
//
// TMsgNetwork
//
////////////////////////////////////////////////////////////////////////////////

//------------------------------------------------------------------------------
// Create
//------------------------------------------------------------------------------
constructor TMsgNetwork.Create(ConnectionManager: TMsgBaseConnectionManager);
begin
{$IFDEF DEBUG_LOG_NETWORK_TIME}
aaWriteToLog('TMsgNetwork.Create');
aaWriteToLog(IntToStr(gettickcount));
{$ENDIF}

  inherited Create;
  FManager := ConnectionManager;
  FLocalClient := RndClientID;
{$IFDEF API_NETWORK}
  FMsgNetwork := TMsgapiNetwork.Create;
  FMsgNetwork.OnDataReceived := OnDataReceived;
  FMsgNetwork.OnDisconnect := OnDisconnect;
{$ELSE}
 {$IFDEF D6H}
//  FNetworkClient := TIdUDPClient.Create(nil);
  FNetworkServer := TIdUDPServer.Create(nil);
  FNetworkServer.OnUDPRead := OnDataReceived;
 {$ELSE}
  FTransport := TNMUDP.Create(nil);
  FTransport.OnDataReceived := OnDataReceived;
 {$ENDIF D6H}
{$ENDIF API_NETWORK}

{$IFDEF DEBUG_LOG_NETWORK_TIME}
aaWriteToLog(IntToStr(gettickcount));
aaWriteToLog('');
{$ENDIF}
end;// Create


//------------------------------------------------------------------------------
// Destroy
//------------------------------------------------------------------------------
destructor TMsgNetwork.Destroy;
begin
{$IFDEF DEBUG_LOG_NETWORK_TIME}
aaWriteToLog('TMsgNetwork.Destroy');
aaWriteToLog(IntToStr(gettickcount));
{$ENDIF}

{$IFDEF API_NETWORK}
  FMsgNetwork.Free;
{$ELSE}
 {$IFDEF D6H}
//  FNetworkClient.Free;
  FNetworkServer.Free;
 {$ELSE}
  FTransport.Free;
 {$ENDIF D6H}
{$ENDIF}
  inherited Destroy;

{$IFDEF DEBUG_LOG_NETWORK_TIME}
aaWriteToLog(IntToStr(gettickcount));
aaWriteToLog('');
{$ENDIF}
end;// Destoy


//------------------------------------------------------------------------------
// RndClientID
//------------------------------------------------------------------------------
function TMsgNetwork.RndClientID: TMsgNetworkClientID;
label generate;
begin
  Randomize;
generate:
  Result := Random(MAX_INT); // - (MAX_INT div 2);
  if (Result >= 0) and (Result < 1024) then // Reserved for ServerID
{ TODO -oAll: Add to DevGuide:
ServerID must be unique for each server working at the one machine.
We recomend to set ServerID from the region 0...1023.
}
   goto generate;
end;// RndClientID


//------------------------------------------------------------------------------
// SetRemoteHost
//------------------------------------------------------------------------------
procedure TMsgNetwork.SetRemoteHost(Host: String);
begin
{$IFDEF API_NETWORK}
  FMsgNetwork.RemoteHost := Host;
{$ELSE}
 {$IFDEF D6H}
  FRemoteHost := Host;
//  FNetworkClient.Host := Host;
 {$ELSE}
  FTransport.RemoteHost := Host;
 {$ENDIF}
{$ENDIF}
end;


//------------------------------------------------------------------------------
// GetRemoteHost
//------------------------------------------------------------------------------
function TMsgNetwork.GetRemoteHost: String;
begin
{$IFDEF API_NETWORK}
  Result := FMsgNetwork.RemoteHost;
{$ELSE}
 {$IFDEF D6H}
  Result := FRemoteHost;
//  Result := FNetworkClient.Host;
 {$ELSE}
  Result := FTransport.RemoteHost;
 {$ENDIF}
{$ENDIF}
end;


//------------------------------------------------------------------------------
// SetRemotePort
//------------------------------------------------------------------------------
procedure TMsgNetwork.SetRemotePort(Port: Integer);
begin
{$IFDEF DEBUG_LOG_NETWORK_TIME}
aaWriteToLog('TMsgNetwork.SetRemotePort');
aaWriteToLog(IntToStr(gettickcount));
{$ENDIF}

{$IFDEF API_NETWORK}
  FMsgNetwork.RemotePort := Port;
{$ELSE}
 {$IFDEF D6H}
  FRemotePort := Port;
//  FNetworkClient.Port := Port;
 {$ELSE}
  FTransport.RemotePort := Port;
 {$ENDIF}
{$ENDIF}

{$IFDEF DEBUG_LOG_NETWORK_TIME}
aaWriteToLog(IntToStr(gettickcount));
aaWriteToLog('');
{$ENDIF}
end;


//------------------------------------------------------------------------------
// GetRemotePort
//------------------------------------------------------------------------------
function TMsgNetwork.GetRemotePort: Integer;
begin
{$IFDEF API_NETWORK}
  Result := FMsgNetwork.RemotePort;
{$ELSE}
 {$IFDEF D6H}
  Result := FRemotePort;
//  Result := FNetworkClient.Port;
 {$ELSE}
  Result := FTransport.RemotePort;
 {$ENDIF}
{$ENDIF}
end;


//------------------------------------------------------------------------------
// SetLocalPort
//------------------------------------------------------------------------------
procedure TMsgNetwork.SetLocalPort(Port: Integer);
begin
{$IFDEF DEBUG_LOG_NETWORK_TIME}
aaWriteToLog('TMsgNetwork.SetLocalPort');
aaWriteToLog(IntToStr(gettickcount));
{$ENDIF}

{$IFDEF API_NETWORK}
  FMsgNetwork.LocalPort := Port;
{$ELSE}
 {$IFDEF D6H}
  FNetworkServer.Active := False;
  FNetworkServer.DefaultPort := Port;
  FNetworkServer.Active := True;
 {$ELSE}
  FTransport.LocalPort := Port;
 {$ENDIF}
{$ENDIF}

{$IFDEF DEBUG_LOG_NETWORK_TIME}
aaWriteToLog(IntToStr(gettickcount));
aaWriteToLog('');
{$ENDIF}
end;


//------------------------------------------------------------------------------
// SetLocalHost
//------------------------------------------------------------------------------
procedure TMsgNetwork.SetLocalHost(Host: String);
begin
{$IFDEF DEBUG_LOG_NETWORK_TIME}
aaWriteToLog('TMsgNetwork.SetLocalHost');
aaWriteToLog(IntToStr(gettickcount));
{$ENDIF}

{$IFDEF API_NETWORK}
  FMsgNetwork.LocalHost := Host;
{$ELSE}
  FLocalHost := Host;
{$ENDIF}

{$IFDEF DEBUG_LOG_NETWORK_TIME}
aaWriteToLog(IntToStr(gettickcount));
aaWriteToLog('');
{$ENDIF}
end;


//------------------------------------------------------------------------------
// GetLocalHost
//------------------------------------------------------------------------------
function TMsgNetwork.GetLocalHost: String;
begin
{$IFDEF API_NETWORK}
  Result := FMsgNetwork.LocalHost;
{$ELSE}
  Result := FLocalHost;
{$ENDIF}
end;


//------------------------------------------------------------------------------
// GetLocalPort
//------------------------------------------------------------------------------
function TMsgNetwork.GetLocalPort: Integer;
begin
{$IFDEF API_NETWORK}
  Result := FMsgNetwork.LocalPort;
{$ELSE}
 {$IFDEF D6H}
  Result := FNetworkServer.DefaultPort;
 {$ELSE}
  Result := FTransport.LocalPort;
 {$ENDIF}
{$ENDIF}
end;


//------------------------------------------------------------------------------
// SendBuffer
//------------------------------------------------------------------------------
procedure TMsgNetwork.SendBuffer(
                          Buffer: PChar;
                          Count:  Integer);
var
  Header: PMsgPacketHeader;
{$IFNDEF D6H}
  Buff: array [0..MsgMaxPacketSize] of Char;
{$ENDIF}

⌨️ 快捷键说明

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