unit Net7Server;
interface
uses
SysUtils, Classes, ScktComp,Forms;
// Primärheader
Type
TPHead=record
Size :Longword;
end;
// Sekundärheader
Type
TSHead=record
TPSize :Longword;
//Lange komplettes Paket
Size :Longword;
// Länge der Kern Daten
Typ : Integer;
// Typ der Daten
end;
// Statisches Hilfspaket
Type
THilfspaket=record
PriHead : TPHead;
SecHead : TSHead;
Datenbuffer :
array[0..512000]
of byte;
end;
Type
TClientenverwaltung=record
Con :
array [0..100]
of Integer;
HNr :
array [0..100]
of Integer;
isOnline :
array [0..100]
of boolean;
end;
Type
AHandles=array [0..100]
of Integer;
ACon=array [0..100]
of Integer;
// Event erstellen das Datentyp und Grösse wiedergibt
TDatenVerarbeitungEvent =
procedure (Sender:TObject;
var DatenTyp:Integer;
var DatenSize:Longword)
of object;
const LOGFILE = '
LogFile.log';
type
TNet7Server =
class(TServerSocket)
private
{ Private-Deklarationen }
//Variablen für Datenempfang Statisch
PriHead : TPHead;
// Header
Datenbuffer : Pointer;
// Hauptbuffer, dort lagern die empf. Daten
PriDatensize : Longword;
// Grösse kompl. Paket
SecDatensize : Longword;
// Grösse Kerndaten
BufferPosition : Longword;
// Lesezeichen für Receive Buffer
NetDatensize : Longword;
// Grösse des TCP-Pakets
Modus : Integer;
// Modusschalter, Lesen oder Ignorieren
ErstesPaket : Boolean;
// ..
fertig : boolean;
// ...
Dummypaket : THilfspaket;
//...
ExportDatentyp : Integer;
// Datentyp
//Clientverwaltung
CV:TClientenverwaltung;
CVZaehler :Integer;
//Event gibt später Datentyp und Size zurück
FOnVerarbeitung:TDatenVerarbeitungEvent;
FOnDisconnect:TSocketNotifyEvent;
//Interner Logger
function DebugLog(LogString:
String;Varwert:integer;Zeilennummer:integer): Integer;
virtual;
protected
{ Protected-Deklarationen }
public
{ Public-Deklarationen }
function Datenempfang(Client_Verbindungsnummer:integer):boolean;
virtual;
function Datenverarbeitung(
var Exportdaten):boolean;
virtual;
function ClientListNow(
var EHandles;
Var EConnections):boolean;
Virtual;
procedure InitNet7Server;
virtual;
procedure ClientOnList;
virtual;
procedure ClientDeleteList;
virtual;
//function Sendedaten(var Importdaten:pointer;Importdatensize:Longword;ImportDatentyp:Integer):boolean;virtual;
procedure ClientDisconnect(Socket: TCustomWinSOcket);
dynamic;
published
{ Published-Deklarationen }
// Eventproperty
property OnVerarbeitung:TDatenVerarbeitungEvent
read FOnVerarbeitung
write FOnVerarbeitung ;
//property ClientDisconnect:TSocketNotifyEvent read FOnClientDisconnect write FOnClientDisconnect;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('
Marko', [TNet7Server]);
end;
.
.
.