Skip to main content
Skip table of contents

TbeCbTCPServer

TbeCbTCPServer

Eine Komponente die einen TCP Server bereitstellt. Für Codeblock Umgebungen ohne Formular muss der Codeblock persistent ausgeführt werden.

Andernfalls wird das Objekt nach Beendigung des Codeblocks zerstört.

In beas Umgebungen muss das Programm per CallResident() aufgerufen werden und das Objekt mit Persistent und ohne Owner (siehe Beispiel) erzeugt werden, da andernfalls der Codeblock nach Ausführung zerstört wird.

Eigenschaften

Achtung: Die Verdingungs-Eigenschaften müssen eingestellt werden bevor CbActive gesetzt wird.

Eigenschaft
Beschreibung

CbActive:L

Startet den TCP Server
CbPort:NPort auf dem der TCP Server Verbindungen akzeptiert (default) 0
CbTimeout:NTimeout für TCP Kommunikation (default) 0 = unendlich
CbDataTerminator:CUser Agent der bei Anfragen übermittelt wird (default) LF (Linefeed = ASCII 10)
CbMaxConnections:NAnzahl der max. gleichzeitig verbundenen Clients (default) 0 = unendlich (durch Windows/Netzwerk Stack begrenzt)

Verfügbare Ereignisse

Ereignis

Beschreibung

OnException

Wird ausgelöst wenn ein interner Fehler ausgelöst wird.
Signatur: function(oSender:O, oContext:O) 

OnClientConnect

Wird ausgelöst wenn sich eine Client das erste mal verbindet

Signatur: function(oSender:O, oContext:O)

OnClientDisconnect

Wird ausgelöst wenn die Verbindung zu einem Client getrennt wird

Signatur: function(oSender:O, oContext:O)

OnData

Wird ausgelöst wenn Daten empfangen wurden

Signatur: function(oSender:O, oContext:O)

Beispiel

CODE
| oTCPServer:O, lPersistent:L |

//******************************************************************************
// Ereignis wenn Daten empfangen wurden
// Die Daten können über Context.CbData ausgelesen werden
// Die Rückgabe kann über Context.CbResponse gesetzt werden
//******************************************************************************
function DoData(Sender, Context)
   Context.CbResponse := Context.CbData + ' OK' + oTCPServer.CbDataTerminator,

   Log(ClassName(Sender) + ' DoData', llTrace),
end,

//******************************************************************************
// Ereignis wenn sich ein Client verbindet
// Ip / Port können über Contex.CbClientIp / Context.CbClientPort ausgelesen werden
//******************************************************************************
function DoOnClientConnect(Sender, Context)
   Log(ClassName(Sender) + ' DoOnClientConnect', llTrace),
end,

//******************************************************************************
// Ereignis wenn die Verbindung zu einem Client getrennt wird
//******************************************************************************
function DoClientDisconnect(Sender, Context)
   Log(ClassName(Sender) + ' DoClientDisconnect', llTrace),
end,

//******************************************************************************
// Ereignis wenn eine interne Exception auftritt
// Das Exception Objekt kann über Context.CbException ausgelesen werden
//******************************************************************************
function DoException(Sender, Context)
   Log(ClassName(Sender) + ' Fehler:' + GetErrorText(Context.CbException), llError),
end,


// Der Codeblock muss persistent ausgeführt werden, andernfalls wird der
// TCP Server am Ende des Codeblocks wieder zerstört und ist dann nicht mehr
// verfügbar/aktiv
lPersistent := LoadedModule = belmBeas,

startseq
   oTCPServer := CreateObject('TbeCbTCPServer', 'TCPServer',,, lPersistent),
   startseq
      AssignEvent(oTCPServer, "OnException", "DoException"),
      AssignEvent(oTCPServer, "OnClientConnect", "DoOnClientConnect"),
      AssignEvent(oTCPServer, "OnClientDisconnect", "DoClientDisconnect"),
      AssignEvent(oTCPServer, "OnData", "DoData"),

      oTCPServer.CbPort   := 81,
      oTCPServer.CbActive := true,

      writeln(oTCPServer.CbActive),
   always
      if not lPersistent then
         DestroyObject(oTCPServer),
      endif,
   stopseq,
onerror
   Log(GetErrorText(GetErrorObj()), llError),
   writeln('Allgemeiner Fehler: ' + GetErrorText(GetErrorObj())),
stopseq,

Weitere Verknüpfungen

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.