'##############################################################################################################
'##############################################################################################################
' TSNE_V3 - TCP Socket Networking [Eventing] Version: 3.2 (0.18.5)
'##############################################################################################################
'##############################################################################################################
' 2008 By.: /_\ DeltaLab's - Deutschland
' Autor: Martin Wiemann
'##############################################################################################################



'##############################################################################################################
' T S N E - V E R S I O N _ 3 - A P I - D O K U
'##############################################################################################################









'##############################################################################################################
'   Legende / Wichtige Hinweise
'##############################################################################################################

' * Jede Funktion oder Sub beginnt immer mit 'TSNE_'.
' * Funktionen die mit 'TSNE_BW_' beginnen gehren zu den BlackWhite List Befehlen.
' * Parameter beginnen immer mit 'V_' oder 'R_'.
'   Dabei zeigt ein fhrendes 'V_' an das hier Daten bergeben werden mssen
'   Ein fhrendes 'R_' zeigt an, das hier ein Wert von der Funktion / Sub eingetragen / gefllt wird
'	Bis auf einigen Ausnahmen (Siehe 'TSNE_IsClosed') liefert jede Funktion einen GURU-Code zurck.
'	Alle Rckgaben knnen mit 'TSNE_GetGURUCode' in einem String umgewandelt werden.

'IPV6 ist derzeit in Arbeit und wird daher noch nicht untersttzt.








'##############################################################################################################
'   TSNE-Optionen
'##############################################################################################################


'##############################################################################################################
#DEFINE TSNE_DEF_REUSER
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'Beschreibung: Aktiviert die automatische Socket-Rckhohlung. Wurde beispielsweise ein Server erstellt und
'			   und dieser brach ohne das Close ab, oder wurden mehrere Server erstellt, dessen Timeout im
'			   Netzwerk noch fest hngt, dann kann damit die automatische Rckhohlung aktiert werden.
'			   Dadurch wird ein Hngendes Socket, das vom selben Benutzer gestartet wurde, wie der neu zu
'			   erstellende, und dieser nicht belegt ist, weiterverwendet und es kommt zu keinem
'			   TSNE_Const_CantBindSocket ("Can't bind port on socket") Fehler.
'
'			   Hier sollte jedoch mit bedacht gearbeitet werden, da 2 gleichlautende UDP-RX Sockets keine
'			   Fehlermeldung produzieren, obwohl nur einer der erstellten UDP-Sockets empfangsbereit ist.
'			   Dadurch werden alle an die UDP-RX laufenden Nachrichten an das zuletzt erstellte UDP-RX
'			   weitergeleitet. Alle zuvor erstellten empfangen daraufhin keine Daten mehr.
'			   Wird das letzte UDP-RX geschlossen, empfngt der nchst letzte alle Nachrichten.









'##############################################################################################################
'   TCP-Befehle
'##############################################################################################################


'##############################################################################################################
Function TSNE_GetGURUCode (ByRef V_GURUID as Integer) as String
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'Beschreibung: Wandelt einen Guru-Code in einen Englischen Beschreibungs-Text um
'Rckgabe: Liefert einen String mit dem Beschreibungstext zurck.
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'V_GURUID					= Ein gltiger GURU-Code, der von den meisten Funktionen zurckgegeben wird



'##############################################################################################################
Function TSNE_Stats (ByRef V_TSNEID as UInteger, ByRef R_RX as ULongInt, ByRef R_TX as ULongInt) as Integer
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'Beschreibung: Liefert eine kleine Statistik eines TSNE.
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'V_TSNEID					= Hier muss eine gltige TSNE-ID bergeben werden.
'R_RX						= Die Funktion trgt hier die anzahl Bytes ein welche auf dieser TSNE Empfangen wurden.
'R_TX						= Anzahl Bytes die versand wurden.



'##############################################################################################################
Function TSNE_Disconnect (ByRef V_TSNEID as UInteger) as Integer
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'Beschreibung: Beendet eine bestehende Verbindung / geffneten Server bzw. Client.
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'V_TSNEID					= Hier muss eine gltige TSNE-ID bergeben werden.



'##############################################################################################################
Function TSNE_Create_Server (ByRef R_TSNEID as UInteger, ByRef V_Port as UShort, ByRef V_MaxSimConReq as UShort = 10, ByVal V_Event_NewConPTR as Any Ptr, ByVal V_Event_NewConCancelPTR as Any Ptr) as Integer
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'Beschreibung: Erstellt einen neuen TCP-Server
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'R_TSNEID					= Enthlt nach dem Aufruf die TSNEID dieser neuen Verbindung.
'V_Port						= Muss einen Port zwischen 1 und 65535 enthalten, auf dem nach neuen Anfragen 'gelauscht' werden soll
'V_MaxSimConReq				= Muss einen Wert zwischen 1 und 4096 enthalten. Dieser Wert gibt an wie viele Verbindungen gleichzeitig
'							  in der 'Warteschlange' gehalten, bevor weitere Anfragen automatisch abgelehnt werden sollen.
'							  Ein Typischer Wert liegt bei 10.
'V_Event_NewConPTR			= Hier muss ein Pointer auf eine 'NewConnection' Sub angegeben werden. (Siehe: Callback)
'V_Event_NewConCancelPTR	= (Optional) Hier kann ein Pointer auf eine 'NewConnectionCancel' Sub angegeben werden. (Siehe: Callback)



'##############################################################################################################
Function TSNE_Create_Server_WithBindIPA (ByRef R_TSNEID as UInteger, ByRef V_Port as UShort, ByRef V_IPA as UShort, ByRef V_MaxSimConReq as UShort = 10, ByVal V_Event_NewConPTR as Any Ptr, ByVal V_Event_NewConCancelPTR as Any Ptr) as Integer
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'Beschreibung: Erstellt einen neuen TCP-Server der ausschliesslich auf Anfragen an die "V_IPA" IP-Adresse hrt.
'              Dies ist sinvoll, wenn mehrere Netzwerkkarten in einem Computer vorhanden sind und ein Server nur
'              Anfragen von einer Netzwerkkarte Empfangen soll. Hierfr muss die entsprechende IP-Adresse dieser
'              In V_IPA eingetragen werden. Andernfalls (wenn alle eingehenden Anfragen empfangen werden sollen,
'              muss hier "127.0.0.1" eingetragen werden.
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'R_TSNEID					= Enthlt nach dem Aufruf die TSNEID dieser neuen Verbindung.
'V_Port						= Muss einen Port zwischen 1 und 65535 enthalten, auf dem nach neuen Anfragen 'gelauscht' werden soll
'V_IPA						= Muss eine IP-Adresse sein. 127.0.0.1 entspricht hier "Alle". Diese Adresse empfngt Alle Anfragen an den Server.
'							= Sollen nur Anfragen an die IP-Adresse 192.168.0.13 empfangen werden muss die entsprechende IPA eingetragen werden.
'V_MaxSimConReq				= Muss einen Wert zwischen 1 und 4096 enthalten. Dieser Wert gibt an wie viele Verbindungen gleichzeitig
'							  in der 'Warteschlange' gehalten, bevor weitere Anfragen automatisch abgelehnt werden sollen.
'							  Ein Typischer Wert liegt bei 10.
'V_Event_NewConPTR			= Hier muss ein Pointer auf eine 'NewConnection' Sub angegeben werden. (Siehe: Callback)
'V_Event_NewConCancelPTR	= (Optional) Hier kann ein Pointer auf eine 'NewConnectionCancel' Sub angegeben werden. (Siehe: Callback)



'##############################################################################################################
Function TSNE_Create_Client (ByRef R_TSNEID as UInteger, ByVal V_IPA as String, ByVal V_Port as UShort, ByVal V_Event_DisconPTR as Any Ptr, ByVal V_Event_ConPTR as Any Ptr, ByVal V_Event_NewDataPTR as Any Ptr, ByVal V_TimeoutSecs as UInteger = 60) as Integer
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'Beschreibung: Erstellt eine neue Client-Verbindung
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'R_TSNEID					= Enthlt nach dem Aufruf die TSNEID dieser neuen Verbindung.
'V_IPA						= Hier muss eine gltige IP-Adresse bergeben werden.
'V_Port						= Muss einen Port zwischen 1 und 65535 enthalten, auf dem nach neuen Anfragen 'gelauscht' werden soll
'V_Event_DisconPTR			= (Optional) Hier kann ein Pointer auf eine 'Disconnect' Sub angegeben werden. (Siehe: Callback)
'V_Event_ConPTR				= (Optional) Hier kann ein Pointer auf eine 'Connected' Sub angegeben werden. (Siehe: Callback)
'V_Event_NewDataPTR			= Hier muss ein Pointer auf eine 'NewData' Sub angegeben werden. (Siehe: Callback)
'V_TimeoutSecs				= Ein Wert der angibt wann die Funktion zwangsweise beendet wird, falls ein Verbindungsaufbau nicht mglich ist.
'							  Ein typischer Wert ist 60 (Sekunden)



'##############################################################################################################
Function TSNE_Create_Accept (ByVal V_RequestID as Socket, ByRef R_TSNEID as UInteger, ByRef R_IPA as String, ByVal V_Event_DisconPTR as Any Ptr, ByVal V_Event_ConPTR as Any Ptr, ByVal V_Event_NewDataPTR as Any Ptr, ByRef R_RemoteShownServerIPA as String = "") as Integer
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'Beschreibung: Akzeptiert und erstellt eine neue Client-Verbindung welche durch ein 'NewConnection' ausgelst wurde.
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'V_RequestID				= Hier muss eine von einer 'NewConnection' Sub bergebene V_RequestID angegeben werden.
'R_TSNEID					= Enthlt nach dem Aufruf die TSNEID dieser neuen Verbindung.
'R_IPA						= Liefert die IP-Adresse der neuen Verbindung zurck.
'V_Event_DisconPTR			= (Optional) Hier kann ein Pointer auf eine 'Disconnect' Sub angegeben werden. (Siehe: Callback)
'V_Event_ConPTR				= (Optional) Hier kann ein Pointer auf eine 'Connected' Sub angegeben werden. (Siehe: Callback)
'V_Event_NewDataPTR			= Hier muss ein Pointer auf eine 'NewData' Sub angegeben werden. (Siehe: Callback)
'R_RemoteShownServerIPA		= Enhlt nach dem Aufruf die IP-Adresse des eigenen Servers. Hierbei ist die Adresse diejenige, welche der Client eingegeben hat.
'							  Ist z.B. ntzlich um bei FTP-Verbindungen ber PASV die eigene IPA zu ermitteln.



'##############################################################################################################
Function TSNE_Data_Send (ByRef V_TSNEID as UInteger, ByRef V_Data as String, ByRef R_BytesSend as UInteger = 0, ByVal V_IPA as String = "", ByVal V_Port as UShort = 0) as Integer
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'Beschreibung: Sendet Daten an eine Client-Verbindung
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'V_TSNEID					= Hier muss eine gltige TSNE-ID bergeben werden.
'V_Data						= Enthlt die Daten welche bertragen werden sollen.
'R_BytesSend				= Enthlt die Anzahl bertragener Bytes.

'Bei UDP-TSNE's sind folgende Angaben NOTWENDIG. Bei TCP werden diese Parameter ignoriert.
'V_IPA						= Hier muss eine gltige IP-Adresse bergeben werden. ("0" fr Nachrichten an Alle im Subnetz vorhandenen Clienten)
'V_Port						= Muss einen Port zwischen 1 und 65535 enthalten, auf dem nach neuen Anfragen 'gelauscht' werden soll



'##############################################################################################################
Sub TSNE_WaitClose (ByRef V_TSNEID as UInteger)
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'Beschreibung: Beendet den Aufruf erst, wenn die Verbindung (Client oder Server) beendet wurde. (Disconnect)
'DIESE FUNKTION SOLLTE IN KEINEM FALL IN EINEM CALLBACK AUFGERUFEN WERDEN DESSEN V_TSNEID HIER ALS ZU PRFEN
'BERGEBEN WIRD! Dies wrde zu einem Blockieren fhren!
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'V_TSNEID					= Hier muss eine gltige TSNE-ID bergeben werden.



'##############################################################################################################
Function TSNE_IsClosed (ByRef V_TSNEID as UInteger) as UByte
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'Beschreibung: Prft ob eine Verbindung noch aktiv ist, oder nicht
'Rckgabe: 1 = Verbindung existiert nicht lnger / hat noch nie, oder wurde beendet. 0 = Verbindung besteht noch.
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'V_TSNEID					= Hier muss eine gltige TSNE-ID bergeben werden.



'##############################################################################################################
Function TSNE_WaitConnected (ByRef V_TSNEID as UInteger, V_TimeOut as UInteger = 60) as Integer
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'Beschreibung: Prft ob eine Verbindung vollstndig hergestellt wurde und Bereit ist Daten auszutauschen.
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'V_TSNEID					= Hier muss eine gltige TSNE-ID bergeben werden.
'V_Timeout					= Ein Wert der angibt wann die Funktion zwangsweise beendet wird, falls ein Verbindungsaufbau nicht mglich war.
'							  Ein typischer Wert ist 60 (Sekunden)
'							  (ACHTUNG) Dieser Wert wird auf die Etablierung der Verbindugn Hinzugerechnet (Create_Client Timeout + Wait Timeout)









'##############################################################################################################
'   UDP Befehle
'##############################################################################################################


'##############################################################################################################
Declare Function	TSNE_Create_UDP_RX			(ByRef R_TSNEID as UInteger, ByVal V_Port as UShort, ByVal V_Event_NewDataUDPPTR as Any Ptr) as Integer
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'Beschreibung: Erstellt ein neues Socket (ansprechbar mit R_TSNEID) fr den EMPFANG von UDP-Nachrichten
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'R_TSNEID					= Enthlt nach dem Aufruf die TSNEID dieser neuen Verbindung.
'V_Port						= Muss einen Port zwischen 1 und 65535 enthalten, auf dem nach neuen Anfragen 'gelauscht' werden soll
'V_Event_NewDataUDPPTR		= Hier muss ein Pointer auf eine 'NewDataUDP' Sub angegeben werden. (Siehe: Callback)



'##############################################################################################################
Declare Function	TSNE_Create_UDP_TX			(ByRef R_TSNEID as UInteger, ByVal V_DoBroadcast as UByte = 0) as Integer
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'Beschreibung: Erstellt ein neues Socket (ansprechbar mit R_TSNEID) fr den VERSAND von UDP-Nachrichten
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'R_TSNEID					= Enthlt nach dem Aufruf die TSNEID dieser neuen Verbindung.
'V_DoBroadcast				= '1' Aktiviert den Broadcast Modus. Damit ist es mglich Broadcast-Nachrichten
'							  in das Subnetz zu senden. '0' ist der Regulre Modus fr den direkten Versand.



'##############################################################################################################
'Das Senden von Daten wird mit dem in den TCP-Befehlen beschriebene "TSNE_Data_Send" durchgefhrt.









'##############################################################################################################
'   PING Befehle
'##############################################################################################################


'##############################################################################################################
Declare Function	TSNE_Ping					(ByVal V_IPA as String, ByRef R_Runtime as Double, ByVal V_TimeoutSecs as UByte = 10) as Integer
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'Beschreibung: Fhrt eine Laufzeitanfrage (Ping) zu einem angegebenem Computer aus
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'V_IPA						= Hier muss eine gltige IP-Adresse bergeben werden. ("0" fr Nachrichten an Alle im Subnetz vorhandenen Clienten)
'R_Runtime					= Gibt bei Erfolg die Laufzeit des Pings aus
'V_TimeoutSecs				= (Optional) Hier kann ein Timeout Wert fr die Anfrage in Sekundenangegeben werden. (Standard 10 Sekunden)









'##############################################################################################################
'   Black/White-List Befehle
'##############################################################################################################


'##############################################################################################################
Function TSNE_BW_SetEnable (ByVal V_Server_TSNEID as UInteger, V_Type as TSNE_BW_Mode_Enum) as Integer
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'Beschreibung: Deaktiviert / Aktiviert eine Black/White-List
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'V_Server_TSNEID			= Hier muss eine gltige TSNE-ID eines Servers bergeben werden.
'V_Type						= Gibt an welcher Typus von Liste verwendet werden soll.
'							  TSNE_BW_Mode_None		= Keine List verwenden. (Deaktiviert)
'							  TSNE_BW_Mode_Black	= BlackList. Alle IP-Adressen auf dieser Liste werden Ignoriert.
'							  TSNE_BW_Mode_White	= WhiteList. Alle IP-Adressen auf dieser Liste werden Akzeptiert.



'##############################################################################################################
Function TSNE_BW_GetEnable (ByVal V_Server_TSNEID as UInteger, R_Type as TSNE_BW_Mode_Enum) as Integer
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'Beschreibung: Liest den Status der Black/White-List
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'V_Server_TSNEID			= Hier muss eine gltige TSNE-ID eines Servers bergeben werden.
'R_Type						= Enthlt nach dem Funktionsaufruf den Typus der Liste. (Siehe: TSNE_BW_SetEnable)



'##############################################################################################################
Function TSNE_BW_Clear (ByVal V_Server_TSNEID as UInteger) as Integer
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'Beschreibung: Leert die BW_Liste vollstndig. (Alle IP-Adressen werden gelscht)
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'V_Server_TSNEID			= Hier muss eine gltige TSNE-ID eines Servers bergeben werden.



'##############################################################################################################
Function TSNE_BW_Add (ByVal V_Server_TSNEID as UInteger, V_IPA as String) as Integer
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'Beschreibung: Fgt eine IP-Adresse zur BW-Liste hinzu.
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'V_Server_TSNEID			= Hier muss eine gltige TSNE-ID eines Servers bergeben werden.
'V_IPA						= Muss eine Gltige IP-Adresse enthalten.



'##############################################################################################################
Function TSNE_BW_Del (ByVal V_Server_TSNEID as UInteger, V_IPA as String) as Integer
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'Beschreibung: Lscht eine IP-Adresse aus der BW-Liste.
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'V_Server_TSNEID			= Hier muss eine gltige TSNE-ID eines Servers bergeben werden.
'V_IPA						= Muss eine Gltige IP-Adresse enthalten.



'##############################################################################################################
Function TSNE_BW_List (ByVal V_Server_TSNEID as UInteger, ByRef R_IPA_List as TSNE_BWL_Type Ptr) as Integer
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'Beschreibung: Gibt eine Liste aller IP-Adressen in der BW_List zurck. Die Liste ist eine 'TSNE_BWL_Type' Linked List.
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'V_Server_TSNEID			= Hier muss eine gltige TSNE-ID eines Servers bergeben werden.
'R_IPA_List					= Gibt den Ersten Pointer auf eine TSNE_BWL_Type Linked List zurck welche die IP-Adressen enthlt.
'							  Muss von hand DeAllocated werden!!!!! Sonst entstehen Speicher-Leaks!!!!!









'##############################################################################################################
'   Strukturen / Konstanten
'##############################################################################################################


'##############################################################################################################
Private Type TSNE_BWL_Type
	V_Next							as TSNE_BWL_Type Ptr
	V_Prev							as TSNE_BWL_Type Ptr
	V_IPA							as String
End Type
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'Beschreibung: Daten-Struktur (Linked List) fr die Black/White Liste.
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'V_Next						= Pointer auf den Nchsten Eintrag in der Liste.
'V_Prev						= Pointer auf einen vorherigen Eintrag in der Liste
'V_IPA						= IP-Adresse



'##############################################################################################################
Enum TSNE_BW_Mode_Enum
	TSNE_BW_Mode_None	= 0
	TSNE_BW_Mode_Black	= 1
	TSNE_BW_Mode_White	= 2
End Enum
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'Beschreibung: Typus der Black/White-Liste
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'TSNE_BW_Mode_None			= Keine Liste verwenden. (Alle Anfragen werden akzeptiert)
'TSNE_BW_Mode_Black			= Schwarze-Liste. IP-Adresse auf dieser Liste werden automatisch abgewiesen.
'TSNE_BW_Mode_White			= Weie-Liste. IP-Adressen auf dieser Liste werden nicht abgeweisen.



'##############################################################################################################
'TSNE_Const_UnknowError				= Unbekannter Fehler.
'TSNE_Const_NoError					= Kein Fehler.
'TSNE_Const_UnknowEventID			= Unbekannte EventID.
'TSNE_Const_NoSocketFound			= 'V_SOCKET' enthlt keine gltige Socket-ID.
'TSNE_Const_CantCreateSocket		= Konnte Socket nicht erstellen.
'TSNE_Const_CantBindSocket			= Konnte Socket nicht an Port binden.
'TSNE_Const_CantSetListening		= Konnte Socket nicht in den 'Listening'-Mode versetzen.
'TSNE_Const_SocketAlreadyInit		= Socket wurde bereits Inizialisiert.
'TSNE_Const_MaxSimConReqOutOfRange	= 'V_MaxSimConReq' ist auserhalb des gltigen Bereichs.
'TSNE_Const_PortOutOfRange			= 'V_Port' ist auserhalb des gltigen Bereichs
'TSNE_Const_CantResolveIPfromHost	= Konnte Host-Name nicht in IP-Adresse umwandeln
'TSNE_Const_CantConnectToRemote		= Konnte keine Verbindung zur Gegenstelle aufbauen
'TSNE_Const_TSNEIDnotFound			= 'V_TSNEID' wurde nicht gefunden.
'TSNE_Const_MissingEventPTR			= Vermisse 'Event_...' Pointer.
'TSNE_Const_IPAalreadyInList		= IP-Adresse ist bereits auf der Liste.
'TSNE_Const_IPAnotInList			= IP-Adresse ist nicht in der Liste.
'TSNE_Const_ReturnErrorInCallback	= Unbekannter Fehler in Internem Aufruf einer Funktion.
'TSNE_Const_IPAnotFound				= IP-Adresse wurde nicht gefunden.
'TSNE_Const_ErrorSendingData		= Fehler bei der Datenbertragung. Eventuell wurde die Verbindung getrennt.
'TSNE_Const_UnknowGURUcode			= Unbekannter GURU-Code
'TSNE_Const_TSNENoServer			= 'V_Server_TSNEID' ist kein Server
'TSNE_Const_NoIPV6					= Keine IPV6 untersttzung!









'##############################################################################################################
'   Callback Strukturen
'##############################################################################################################


'##############################################################################################################
Sub TSNE_Disconnected (ByVal V_TSNEID as UInteger)
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'Beschreibung: Wird ausgelsst wenn eine Verbindung beendet wurde (Entweder durch ein TSNE_Disconnect oder von der Gegenstelle)
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'V_TSNEID					= Hier findet sich die TSNE-ID der Verbindung, welche beendet wurde.



'##############################################################################################################
Sub TSNE_Connected (ByVal V_TSNEID as UInteger)
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'Beschreibung: Wird ausgelsst wenn eine Verbindung vollstndig aufgebaut wurde. (Nur bei Client / Accept Verbindungen)
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'V_TSNEID					= Hier findet sich die TSNE-ID der Verbindung, welche erfolgreich Verbunden wurde.



'##############################################################################################################
Sub TSNE_NewConnection (ByVal V_TSNEID as UInteger, ByVal V_RequestID as Socket, ByVal V_IPA as String)
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'Beschreibung: Wird ausgelsst wenn ein Server eine neue Verbindungsanfrage erhalten hat.
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'V_TSNEID					= Hier findet sich die TSNE-ID des Servers, welcher eine Anfrage erhalten hat.
'V_RequestID				= Enthlt eine Socket-Nummer welche den Anfragenden Identifiziert und muss bei einem
'							  TSNE_Create_Accept bergeben werden!
'V_IPA						= Enthlt die IP-Adresse des Anfragenden.



'##############################################################################################################
Sub TSNE_NewConnectionCanceled (ByVal V_TSNEID as UInteger, ByVal V_IPA as String)
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'Beschreibung: Wird ausgelsst wenn eine Verbindungsanfrage AUTOMATISCH vom Server verweigert wurde.
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'V_TSNEID					= Hier findet sich die TSNE-ID des Servers, welcher eine Anfrage erhalten hat.
'V_IPA						= Enthlt die IP-Adresse des Anfragenden.



'##############################################################################################################
Sub TSNE_NewData (ByVal V_TSNEID as UInteger, ByRef V_Data as String)
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'Beschreibung: Wird ausgelsst wenn eine Verbindung neue Daten Empfangen hat.
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'V_TSNEID					= Hier findet sich die TSNE-ID der Verbindung, welche neue Daten empfangen hat.
'V_Data						= Enthlt die Daten, welche Empfangen wurden. (KEIN 0-Terminierter ZString!!!)



'##############################################################################################################
Sub TSNE_NewDataUDP (ByVal V_TSNEID as UInteger, ByVal V_IPA as String, ByRef V_Data as String)
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'Beschreibung: Wird ausgelsst wenn eine UDP!!! Verbindung neue Daten Empfangen hat.
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'V_TSNEID					= Hier findet sich die TSNE-ID der Verbindung, welche neue Daten empfangen hat.
'V_IPA						= Enthlt die IP-Adresse desjenigen, welcher die Daten gesand hat.
'V_Data						= Enthlt die Daten, welche Empfangen wurden. (KEIN 0-Terminierter ZString!!!)



