TSNE V2 / V3
| Projektzusammenfassung | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||
TSNE Version: 2.0 / 3.0
Im Grunde ist dies dieselbe Bibliothek (von der BASIS her), wie die TSNE Version: 1.0 (wurde durch diese hier ersetzt).
Jedoch, inspiriert von PMedias Aufbau der PNE, jetzt mit eingebautem Threading und Event-Call zur vereinfachten Nutzung von Sockets in FreeBASIC.
Die Bibliothek ermöglicht durch Nutzung von CallBack Sub's eine einfache Steuerung eingehender Informationen oder Statusänderungen. Die Folge sind asynchrone Programme, die nicht auf Änderungen des Socket-Status warten müssen oder auf die vollständige Sendung eines Datenpakets, um mit anderen, wartenden Sockets weiterarbeiten zu können.
Die Auslagerung einzelner Verbindungen in Threads ermöglicht die Asynchronität im Programm, sowie die statische und serielle Callback-Reihenfolge aufrecht zu erhalten, wodurch keine Missverständnisse beim Aufbau (Connect-Event) und dem Eingehen neuer Verbindungsmeldungen (NewConnection-Event) entstehen.
Dadurch lässt sich eine eingehende Verbindung signalisieren, wodurch das Programm Vorbereitungen für deren Akzeptierung der Verbindung ausführen kann. Anschliessend bekommt das Programm die Bestätigung der bestehenden Verbindung mitgeteilt. Daraufhin könnte ein Server sofort Daten an den verbundenen Client senden, um ihn z.B. zum Anmelden am Server aufzufordern.
Der Vielfalt bei der Nutzung sind jedoch keinerlei Grenzen gesetzt. Dies gilt natürlich auch für die Erweiterung der Bibliothek oder dem BUG-Reporting in folgendem Forums-Thread:
Http://forum.QBasic.at ->
TSNE - Netzwerk-Modul
MfG + Viel Erfolg
TPM
Quellcode / Sourcecode (Version: 3)
API-Dokumentation / API Documentation
* Ein kleiner Client / Little Client
* Ein kleiner HTTP-Server / Easy HTTP-Server
* Ein kleiner HTTP-Server der an eine IP-Adresse gebunden werden kann. / Easy HTTP-Server what can bind on a IP-Address
* UDP Beispiel / UDP Example
* Ein kleiner SMTP-Mailer / Little SMTP-Mailer
* Kleiner schneller PortScanner für eigene Netze / Easy Portscanner for own Networks
* Cookies verwenden / Using Cookies
* WAN IP-Adresse ermitteln / Request own WAN IP-Address
* Einen Computer anpingen / Ping to another computer
Quellcode (Version: 2) ==VERALTET== (OLD Version)
Bitte nicht weiter nutzen! / Please don't use it futuremore!
TSNE_V2.bi (fbc 0.18.5b und höher) (Gültig AB: 22.04.2008)
TSNE_V2.bi (fbc 0.18.4b) (Gültig BIS: 22.04.2008)
API-Dokumentation
Ein kleiner Client
ein kleiner Server
ein kleiner HTTP-Server
=!= WICHTIG =!= Important =!=
Bei Nutzung des freeBASIC Compilers Version: 0.18.5 (04-17-2008) Linux (auch Windows und DOS) ist ein Fehler in der Include Datei (crt/sys/linux/time.bi)!
Dies betrift sowohl die 'Standalone' als auch die reguläre Version!!!
If u use freeBASIC Compiler Version 0.18.5 (04-17-2008) Linux (Windows and DOS too) then u must Fix a little Bug inside of "crt/sys/linux/time.bi" btw. ".../time.bi"
Hier muss folgende Änderung vorgenommen werden! / Fix the following Source
#ifndef timeval
type timeval
tv_sec as __time_t
tv_usec as __suseconds_t
end type
#endif
muss zu folgendem code abgeändert werden / Change it to
type timeval
tv_sec as __time_t
tv_usec as __suseconds_t
end type
Ansonsten kann es zu Problemen bei der Kompilierung kommen! / Else it can produce errors while compiling!
Changelog
15.12.2011
- TSNE_PINGICMP definiert und includiert wegen möglicher nicht Existenz der ICMP.dll auf dem Zielsystem.
- TSNE_SUBCALLBACK definiert und includiert. Ermöglicht die direkte Weitergabe von Pointer an die Events.
- test_ping.bas aktualisiert.
02.10.2011
- TSNE_V3.5 Release
- TSNE_Create_Client / TSNE_Create_UDP_TX / TSNE_Create_Accept wurden mit einer Prüfung ausgestattet ob der Socket-Thread bereits stabil läuft. Ist dem nicht der Fall > Fehlermeldung: TSNE_Const_UnstableState
- TSNE_Ping eingebaut. BETA STATUS
- test_ping.bas hinzugefügt
- TSNE_WaitConnected hinzugefügt
- "API_Doku" wurde aktualisiert.
22.06.2011
- Konstruktor und Destruktor wurden Modifiziert um bei Nutzung mit Shared-Variablen in Bezug auf OOP eine Fehlerhafte Startprozedur des Winsocks unter Windows zu beheben.
23.02.2011
- "TSNE_Create_Server_WithBindIPA" hinzugefügt. Diese Funktion ermöglicht das "Anbinden" einer IP-Adresse an den Server. Grundlegend ist der Aufbau dieser Funktion identisch mit "TSNE_Create_Server". Hinzugekommen ist jedoch ein weiterer Parameter welcher eine IP-Adresse benötigt. Details finden sich im Beispiel "test_server_bindipa.bas"
- "API_Doku" wurde aktualisiert.
01.10.2010
KRITISCHE FEHLERBEHEBUNG
- Fehlerhafte select Auswerbung für TCP Sockets beim skalieren einer TTY behoben.
23.08.2010
- Neuer Return-Code hinzugefügt: 'TSNE_Const_CantCreateSocketLimit'. Wird aufgerufen, wenn der Prozess oder das System keien ausreichenden Resourcen mehr besitzt um ein Socket zu erzeugen. (System-Limit erreicht)
27.08.2009
- 'TSNE_Create_Accept' wurde mit dem Parameter 'R_RemoteShownServerIPA' Erweitert um die eigene Server IPA erkennen zu können, welcher der Client nutzt.
- Serverbeispiel erweitert
- API-Doku erweitert
18.03.2009
KRITISCHE FEHLERBEHEBUNG
- Am Ende von 'TSNE_INT_Thread_Event' wurde eine zusätzliche Prüfung des Socket-Status integiert, welcher bei noch aktivem Socket dieses schliesst.
26.02.2009
- In 'TSNE_Create_Accept' wurde der 3te Parameter (R_IPA) zu einem optionalem Parameter geändert. -> (ByRef R_IPA as String = "")
- 'setsockopt' wird nun für Windows und Linux getrennt behandelt.
- Eigene IP-Verwaltung für Hostname Auflösung integriert.
- 'TSNE_INT_StackSize' auf 512000 herauf gesetzt.
25.01.2009
- 'TSNE_DEF_REUSER'in TSNE Eingebaut (Siehe API-Doku)
- API-Doku aktualisiert und fehlerhaft beschreibene 'TSNE_IsClosed' korrigiert
09.11.2008
- TSNE_V3.2 release
- UDP-Unterstützung integriert
- API-Doku mit UDP erweitert und vergessene Callback-Struktur hinzugefügt
- UDP Beispiel erstellt
- Bug-Fix: Fehlendes MutexUnLock in TSNE_IsClosed hinzugefügt.
07.11.2008
- Bug-Fix der Stackgrösse. Aufgrund einer Grössenänderung des Thread-Stacks in FBC (seit 0.20.0b) kam es zu einem "Rauslaufen" des Allockierten Speichers im Socket-Thread, was zur folge hatte, das dieser (und das restliche app mit) sich verabschiedet haben. Dieses Problem scheint jedoch nur unter Linux aufzutreten. Ich Empfehle jedoch jedem die aktuelle Version zu laden.
Dies bezieht sich nicht nur auf die TSNE_V3 sondern auch auf TSNE_V2!!!
Im Forum (
TSNE - Netzwerk-Modul ) findet sich eine Anleitung, die beschreibt wie man TSNE_V2 eentsprechend umrüsten kann)
18.10.2008
- TSNE_V3 release
- TSNE_V3 - API-Doku
- TSNE_V3 - Client Beispiel
- TSNE_V3 - Server Beispiel
16.09.2008
- Ein Kleiner Bug bezüglich fcntl unter Windows wurde behoben.
- in Server_Test.bas wurde zwischen Do und Loop ein Sleep 1, 1 eingebaut, um die CPU auslastung voon 100% auf ein minimum zu reduzieren.
- Neues Serverbeispiel hinzugefügt. GANZ kleiner HTTP-Server
05.06.2008
- Es wurde ein Timeout für TSNE_Create_Client eingebaut. Dieser ermöglicht die unter Linux gängie 75sekunden Wartezeit (windows 60sek.) bei nicht erfolgreichem verbindungsaufbau zu minimieren. Dabei kann die Zeitangabe in 1sek. schritten von 0 beginnend erfolgen. Die Implementation ist experimental und daher als seperates TSNE_V2_experimental Modul erhältlich.
28.04.2008
- Im Destructor wurde eine abgestufte beendigung des Moduls integriert. Dadurch führt bei Nutzung des Moduls in einer Lib diese nicht zu einem Crash des Programmes. Dieser Fehler wirktsich jedoch nur bei Nutzung in Librarys bzw in gekapselten Programmen aus.
25.04.2008
KRITISCHE FEHLERBEHEBUNG
- Die Puffergrösse wurde auf 7936 geändert. Dies entspricht dem Vollen Datenpacket eines TCP/IP Packets. Der ursprünglich zu grosse Wert von 8092 führte zu einem Datenverlust von 61 Bytes wenn das TCP Packet die volle Datenkapazität transportierte.
22.04.2008
- Include von time.bi sowie select.bi für fbc Version 0.18.5b
- Bug-Fix Dokumentation für fbc-Compiler über die Downloads auf dieser Seite hinzugefügt
31.01.2008
- Es wurde eine neues Event hinzugefügt 'TSNE_NewConnectionCanceled' (Näheres im server_test.bas Beispiel
- Es wurde eine BlackList integriert (TSNE_BlackList_xxx) Auch hier Näheres in der server_test.bas
- 'TSNE_NewConnection' Event wurde um einen Parameter erweitert (ByVal V_IPA as String). Das Event gibt jetzt vor dem Accept die IP-Adresse der Gegenstelle zurück.
- Beschleunigtes Timing-Model mit Select anstatt mit Sleep
- server_test.bas aktualisiert (Dokumentation und Quellcode)
- client_test.bas aktualisiert (Nur Dokumentation)
- API-Dokumentation aktualisiert.
22.01.2008
- In TSNE_Create_Client und TSNE_Create_Server wurde die BV Variable von ULong auf Long geändert. Wenn eine Verbindung etabliert wird, und der gegnerische Computer nicht existiert, würde dies zu einem falschen GURU-Code führen, der eine Verbindung als OK meldet, obwohl der Zielcomputer nicht erreichbar ist.
13.01.2008
KRITISCHE FEHLERBEHEBUNG
- MSG_NOSIGNAL wurde zu TSNE_MSG_NOSIGNAL geändert sowie für Linux mit dem Wert &h4000 und für den Rest auf 0 gesetzt. Grund: Unter Windows sendet die Lib keine Daten.
05.01.2008
KRITISCHE FEHLERBEHEBUNG
- In "Thread_Event" wurde Im Client Teil nach dem Umkopieren der empfangenen Daten das "Byte zu viel [Chr(0)"] entstanden durch den Kopiervorgang, gelöscht. -> Beim Datenempfang würde ein ASCII:0 am Ende des Strings stehen, der Fehler verursachen könnte.
02.01.2008
KRITISCHE FEHLERBEHEBUNG
- Master Thread wurde eingebaut, welcher für eine saubere Beendigung der Client-Threads sorgt. Durch den grossen Umbau wird empfohlen, die .BI komplett neu herunter zu laden.
31.12.2007
KRITISCHE FEHLERBEHEBUNG
- TSNE_Stats MutexLock nach Return -12 verschoben
- TSNE_Disconnect MutexLock nach Return -12 verschoben
- TSNE_Create_Server nach TSNED fund Exit For ausführen, Sowie MutexLock verschoben
- gleiches in TSNE_Create_Client, TSNE_Create_Accept, TSNE_Data_Send, TSNE_WaitClose, TSNE_IsClosed, Thread_Event
- Sleep in Thread_Event eingebaut
- Thread_Event ... TLenB auf Integer umgestellt
Changelog
26.12.2007
TSNE Version 1.0 entfernt und durch TSNE Version 2.0 ersetzt
- "TSNE_Stats" integriert.
- API Dokumentation erstellt
- Thread-Safe integriert
- MUTEX integriert
- CallBack in TSNE_Create_Accept, _Server, _Client integriert, TSNE_Set_Event entfernt
- NoThread in Create_Client entfernt.
- TSNE_Data_Send mit Statistik Verwaltung ausgestattet
| Dateimanager | ||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|




FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!
