📄 msgconnection.old.pas
字号:
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 + -