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 (Version: 3)
TSNE_V3.bi (fbc 0.18.5b und höher)
API-Dokumentation
Ein kleiner Client
Ein kleiner HTTP-Server
UDP Beispiel
Ein kleiner SMTP-Mailer
Kleiner schneller PortScanner für eigene Netze
Cookies verwenden:
Quellcode (Version: 2) ==VERALTET==
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 =!=
Bei Nutzung des freeBASIC Compilers Version: 0.18.5 (04-17-2008) Linux (eventuell 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!!!
Hier muss folgende Änderung vorgenommen werden!
#ifndef timeval
type timeval
tv_sec as __time_t
tv_usec as __suseconds_t
end type
#endif
muss zu folgendem code abgeändert werden
type timeval
tv_sec as __time_t
tv_usec as __suseconds_t
end type
Ansonsten kann es zu Problemen bei der Kompilierung kommen!
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
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
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.
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.
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.
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.
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.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
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.
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.
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.
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
18.10.2008
- TSNE_V3 release
- TSNE_V3 - API-Doku
- TSNE_V3 - Client Beispiel
- TSNE_V3 - Server Beispiel
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)
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.
25.01.2009
- 'TSNE_DEF_REUSER'in TSNE Eingebaut (Siehe API-Doku)
- API-Doku aktualisiert und fehlerhaft beschreibene 'TSNE_IsClosed' korrigiert
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.
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.
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
| Dateimanager | ||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|




