 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Wie findet Ihr dieses Projekt? |
Super |
|
80% |
[ 16 ] |
Gut |
|
10% |
[ 2 ] |
Mittelmässig |
|
10% |
[ 2 ] |
Schlecht (Warum?) |
|
0% |
[ 0 ] |
Scheisse (Warum?) |
|
0% |
[ 0 ] |
|
Stimmen insgesamt : 20 |
|
Autor |
Nachricht |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 06.12.2007, 12:48 Titel: [ Win/Linux ][ Netzwerk ] TSNE_V2 / V3 - Netzwerk-Modul |
|
|
TSNE_V2 / V3
OS: Win / Linux
Kategorie: Netzwerk
Funktion: Kapselung von TCP Netzwerkbefehlen + Black/White List + UDP
Projektseite:
[DE] V2 / V3 Http://freeBASIC-Portal.de
Kurzbeschreibung:
Vereinfacht den Zugriff auf Befehle zur kommunikation mit dem TCP und UDP Netzwerk
Ausführliche Beschreibung:
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.
Screenshots:
Keine Bilder vorhanden
Direkt Download:
Vor der Nutzung von TSNE mit dem fbc Compiler der Version 0.18.5 bitte UNBEDINGT >DIES HIER< durchlesen!!!
[Sourcecode] Bitte von der Projektseite herunterladen!
Changelog:
Befindet sich auf der Projektseite. bzw als einzelne Postings.
Tutorial:
TSNE_V3 Tutorial: http://www.freebasic-portal.de/tutorials/netzwerkprogrammierung-tsne-v3-60.html
Client-Funktionalität (v2): http://ops.deltalabs.de/code?id=185
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Zuletzt bearbeitet von ThePuppetMaster am 24.01.2014, 00:22, insgesamt 17-mal bearbeitet |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 08.12.2007, 05:37 Titel: |
|
|
Update
Hab die TSNE.bi etwas umgeabut, was sie Thread-Safe macht, und die gelegentlichen Speicherzugriffsfehler verhindert.
Dazu zählt auch der Zugriff auf die Sockets durch ID nummern, und nicht durch Typen-Strukturen, was teilweise zu Probleme geführt hat, wenn mehrere Clients am Server connecten.
und, zu guter letzt hab ich das SendSuccess Event heraus genommen, da es einfach nicht mehr nötig war.
Die Updates hab ich bereits auf die Projekt-Seite integriert.
Zusätzlich hab ich die beiden Beispiele (Client und Server) angepast.
HF & GL
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
AndT
Anmeldungsdatum: 02.04.2007 Beiträge: 481
|
Verfasst am: 10.12.2007, 18:46 Titel: |
|
|
Ich hab einfach mal beim Server aus Port 1234 vom Server Port 80 gemacht und einfach mit http:\\localhost den Server via Browser angesprochen funktioniert wunderbar. _________________ Bis irgendwann...  |
|
Nach oben |
|
 |
darkinsanity aka sts

Anmeldungsdatum: 01.11.2006 Beiträge: 456
|
Verfasst am: 10.12.2007, 19:50 Titel: |
|
|
FB meckert:
Line: 335
File: C:\FreeBasic\TSNE.bi
Error nr: 68
Message: Array not dimensioned, before: '('
□□□□□MemCpy(STRPTR(T), STRPTR(TBuffer), TLenB)
□□□□□ |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 10.12.2007, 20:10 Titel: |
|
|
Hast du auch die aktuelle Version? _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 10.12.2007, 20:32 Titel: |
|
|
AndT hat Folgendes geschrieben: | Ich hab einfach mal beim Server aus Port 1234 vom Server Port 80 gemacht und einfach mit http:\\localhost den Server via Browser angesprochen funktioniert wunderbar. | Unter Windows: JA, unter Linux: Nein .. für Linux ist ROOT nötig, um Ports unterhalb von 1024 als Server zu nutzen.
sts hat Folgendes geschrieben: | FB meckert:
Line: 335
File: C:\FreeBasic\TSNE.bi
Error nr: 68
Message: Array not dimensioned, before: '('
□□□□□MemCpy(STRPTR(T), STRPTR(TBuffer), TLenB)
□□□□□ | Füge doch bitte einmal in zeile 43 hinzu:
Code: | #include once "string.bi" | (ist unter umständen ein Bug, und wird später, nach begutachtung, behoben) ... THX...
Begründung: Der Compiler geht davon aus, das MemCPY ein Array ist, und keine Funktion. Da scheinbar in der Include-kombination (eventuellbei Windows) kein MemCpy includiert wird, muss dies manuel nachgehohlt werden. Dies kann man tunt, indem man die "string.bi" hinzufügt. Dort ist die Funktion MemCpy enthalten.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
croco97

Anmeldungsdatum: 04.11.2005 Beiträge: 260
|
Verfasst am: 11.12.2007, 16:14 Titel: |
|
|
Super Teil. Da fehlt nur noch ein EJB-Server a la JBOSS
Hab's auch gerade versucht zu kompiliert. server-example ergibt:
Code: |
C:\freebasic018\network\tsne>fbc server_exp.bas
C:/freebasic018/network/tsne/TSNE.bi(186) warning 1(1): Passing scalar as
pointer, at parameter 2 of THREADCREATE()
C:/freebasic018/network/tsne/TSNE.bi(236) warning 1(1): Passing scalar as
pointer, at parameter 2 of THREADCREATE()
C:/freebasic018/network/tsne/TSNE.bi(265) warning 1(1): Passing scalar as
pointer, at parameter 2 of THREADCREATE()
C:/freebasic018/network/tsne/TSNE.bi(285) error 41: Variable not declared,
MSG_NOSIGNAL in 'BV = send(TSock, STRPTR(XTemp) + XSC, XLen - XSC, MSG_NOSIGNAL
)'
C:/freebasic018/network/tsne/TSNE.bi(285) warning 12(0): Implicit variable
allocation, MSG_NOSIGNAL
|
Problem scheint dieses MSG_NOSIGNAL zu sein, das nur unter LINUX zur Verfügung steht (inc\crt\sys\linux\socket.bi).
Wenn man den Header etwas umschreibt, passt's auch unter Windows (fbc 0.18.2b): (Jedenfalls compilierts...)
Aus tsne.bi:
Code: |
'##############################################################################################################
#IFDEF __FB_LINUX__
#INCLUDE "crt/stdlib.bi"
#INCLUDE "crt/unistd.bi"
#INCLUDE "crt/sys/types.bi"
#INCLUDE "crt/sys/socket.bi"
#INCLUDE "crt/netinet/in.bi"
#INCLUDE "crt/arpa/inet.bi"
#INCLUDE "crt/netdb.bi"
#DEFINE h_addr h_addr_list[0]
#DEFINE CloseSocket_(_a_) close_(_a_)
#DEFINE INVALID_SOCKET (Cast(Socket, -1))
#ELSE
#DEFINE WIN_INCLUDEALL
#INCLUDE "windows.bi"
#INCLUDE "win\winsock.bi"
#DEFINE close_(_a_) closesocket(_a_)
#DEFINE memcpy(x__, y__, z__) movememory(x__, y__, z__)
#DEFINE MSG_CTRUNC &h08
#DEFINE MSG_PROXY &h10
#DEFINE MSG_TRUNC &h20
#DEFINE MSG_DONTWAIT &h40
#DEFINE MSG_EOR &h80
#DEFINE MSG_WAITALL &h100
#DEFINE MSG_FIN &h200
#DEFINE MSG_SYN &h400
#DEFINE MSG_CONFIRM &h800
#DEFINE MSG_RST &h1000
#DEFINE MSG_ERRQUEUE &h2000
#DEFINE MSG_NOSIGNAL &h4000
#DEFINE MSG_MORE &h8000
SUB StartWinsock() CONSTRUCTOR
DIM wsa AS WSADATA
WSAStartup(MAKEWORD(2,0),@wsa)
END SUB
SUB EndWinsock DESTRUCTOR
WSAcleanup()
END SUB
#Endif
|
Grüsse!
Croco |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 11.12.2007, 16:56 Titel: |
|
|
@croco97 ... korreckt ... das hab ichzwar bis jetzt nur in der beschreibung von TSNE mit hinein beschrieben, aber das werd ich auch noch fest integrieren.
Was die Pasing Scalar Pointer angeht, überder dieses Problem unterhalte ich mich gerade mit PM, um das zu beseitigen. Ist leider nicht ganz so einfach wie mans möchte
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 12.12.2007, 03:00 Titel: |
|
|
Ja .. Doppelpost, aber meiner meinugn nach gerechtfertigt -> Grund: Bug-Fixing
* 12.12.2007
* 'MSG_NOSIGNAL' für Windows-OS integriert
* 'TSNE_NewData' 2ter Parameter (V_Data) von 'ByVal' nach 'ByRef'
* 'TSNE_Data_Send' Ebenfalls 2ter Parameter von ByVal nach ByRef
* Server und Client Beispiel an die Änderungen angeglichen
Brgründung der Änderung: Wenn String-Daten ein ASCII '0' enthalten, werden bei der übertragung der Daten an die Funktion diese ab dem ASCII '0' abgeschnitten. Die Folge sind fehlerhaft übertragene Binäre Daten.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 26.12.2007, 03:25 Titel: TSNE - Netzwerk-Bibliothek - Version 2.0 |
|
|
Version 2.0
Die ursprüngliche TSNE (inoffiziel Version 1.0) wird nicht weiter supportet und wurde auf der >Projektseite< durch die neue Version 2.0 (diesmal offiziel ) ersetzt.
Es wurde nicht nur ein grosser teil der .bi umgebaut, sondern auch eine API-Dokumentation hierzu geschrieben.
Ein grosser Vorteil, im gegensatz zur V1, ist die umgestaltung der Eventsteuerung. Die Übergabe der CallBack Sub's wurde in die entsprechenden Create_... Routinen verlegt. Dadurch ist es nun möglich mehrere Sub's zu definieren, di z.B. einen Client und einen Server steuern, ohne das aufwendige Routing-mechanissmen nötig werden.
Würde mich auch hier wieder über Feedback freuen, und natürlich über BUG-Reporte sowie Erfahrungsberichte.
Viel Erfolg
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Zuletzt bearbeitet von ThePuppetMaster am 31.12.2007, 16:40, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 31.12.2007, 01:59 Titel: |
|
|
KRITISCHE FEHLERBEHEBUNG
Ich empfehle die TSNE_V2.bi vollständig neu herunter zu laden, da sie massive Bugfixes enthält die sich auf das "Einfrieren" des Programms beziehen.
Ausgelöst durch MutexLock, welches in einigen Funktionen nicht zurückgesetzt wird, bzw die Sub / Function vorzeitig durch Return verlassen wird.
Desweiteren wurden einige Schleifen bearbeitet, so das sie schneller einen freien Socket Platz finden.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 31.12.2007, 16:39 Titel: |
|
|
Noch n kleiner aber entscheidender BugFix ...
Danke an PMedia für den Hinweis
In "Thread_Event" wurde die Variable TLenB von UInteger auf Integer umgestellt welche einen Speicherzugriffsfehler, nach dem beenden der Verbindung, erzeugt hat.
Daher ein Wichtiger BugFix.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 02.01.2008, 01:12 Titel: |
|
|
Das hier: http://forum.qbasic.at/viewtopic.php?t=5209 ... angesprochene Problem wurde gelöst, und als Kritisch befunden.
Die Tatsache, das nur 382 Threads gecallt wurden lag an einem Overflow das durch halboffene Threads entsteht. Da nur 382 Threads callbar waren ist es nötig, das die TSNE neu geladen wird, um diesen Fehler zu beheben. Es wurde ein Master-Thread erstellt, der die Disconnects von der Clientseite aus regelt udn mit ThreadWait vollständig terminiert.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 05.01.2008, 04:21 Titel: |
|
|
Bugfix im Datenempfang wurde behoben. Im Thread_Event Sub wurde eine Zeile hinzu gefügt,
Code: | T = Mid(T, 1, Len(T) - 1) |
Welche nach dem Kopiervorgang nach MemCpy ein ASCII: 0 anhängt. Durch dieses zusätzliche Byte können bei der Datenauswertung fehler entstehen.
Noch ne kleine Frage. Stört es euch, wenn ich hier die BUG-Postings veröffentliche?, oder ist es eher hilfreich (warscheinlich eher für die, welche die TSNE verwenden). ?!?
Wenns stört, lass ich es einfach. müsst es nur wissen.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 13.01.2008, 13:10 Titel: |
|
|
KRITISCHE FEHLERBEHEBUNG FÜR WINDOWS
Unter Windows muss beim Senden von Daten das Flag 0 gesetzt werden, und nicht wie unter Linux &h4000. Darum wurde eine TNSE Konstante definiert welche beide unterschiedlichen Werte behandelt und entsprechend beim Kompilieren setzt.
Danke an MaoaM und /flo fürs helfen beim testen auf Windows.
@ssteiner. Das ist die Lösugn für ein Problem. Am besten die TSNE neu runter laden und das App neu kompilieren. dann sollte es gehen.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Zuletzt bearbeitet von ThePuppetMaster am 13.01.2008, 14:00, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 13.01.2008, 13:55 Titel: |
|
|
ThePuppetMaster hat Folgendes geschrieben: | Stört es euch, wenn ich hier die BUG-Postings veröffentliche?, oder ist es eher hilfreich (warscheinlich eher für die, welche die TSNE verwenden). ?!? | Es gibt Fehler, die erst im laufenden Betrieb auftreten..
..es gibt auch Firmen, die ganze Betriebssysteme ausliefern und aus den Fehlern,
die die Kunden melden, dann Service-Packs schnitzen..
Anyway Murphy hat Folgendes geschrieben: | Ein Programm ist nie fertig.. | Fehler sind erst mal da!
Sie sind aber da, um behoben zu werden. Nicht zuletzt kann man aus ihnen lernen, von daher ist es gut, die Lösungen hier zu posten.
Manchmal prägt sich sowas schneller ein
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
AndT
Anmeldungsdatum: 02.04.2007 Beiträge: 481
|
Verfasst am: 13.01.2008, 20:49 Titel: |
|
|
Interessantes Teil
Damit könnte man z.B Spiele Netzwerkfähig machen *g*
Zu den Bugs:
Dank der aktuellen TSNE konnte ich keine Fehler mehr auffinden. Die Verbindung klappt nach der Anpassung der IP und des Ports einwandfrei. _________________ Bis irgendwann...  |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 21.01.2008, 21:43 Titel: |
|
|
TSNEX
Habe jetzt eine erweiterungs-Bibliothek geschreiben, die auf TSNE_V2 aufsetzt, und Funktionen kapselt, die eventuell für diesen oder jenen Zweck geeignet sein könnten. Sie wird noch sehr erweitert, udn stellt zur zeit nur eine kleine Basis dar.
http://www.freebasic-portal.de/index.php?s=projekt&id=13
Da es sich "eigentlich" um ein neues Projekt handelt, jedoch zum TSNE_V2 projekt gehört, hab ich mich entschlossen es hier mit in den Thread zu posten. Wenn zu viele Fehler auftreten, werd ich mal nen Mod bitten desen Thread zu Spliten
Wäre auch hier wieder für Feedback und vorallem Fehleberichte Dankbar.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 22.01.2008, 12:04 Titel: |
|
|
Ich finde TSNE(X) wirklich spitzenmäßig! Ich setze die Bibliothek inzwischen selbst ein und finde, dass damit die Netzwerk-/Internetfunktionalität in FB genauso komfortabel gegeben ist wie in VB mittels Winsock-Control - und das auch noch plattformübergreifend!
Was noch hilfreich wäre, wäre die Möglichkeit, eine IP-Black-/-White-List einzusetzen, dass man also z.B. nur Verbindungen von 127.0.0.1, 192.168.0.123 und 123.123.123.123 zulässt und alle anderen automatisch abweist. Dazu wäre eine Funktion wie V_TSNEID>>IP-Adresse ganz praktisch. _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 22.01.2008, 17:32 Titel: |
|
|
Vielen Dank.. freut mich zu hören, das es doch so hilfreich ist.
Eigentlich wollte ich das gestern noch mit in den letzten Post schreiben, habs aber irgend wie vergessen ... daher mach ich das jetzt hier:
Die TSNE_V2.bi wurde aktualisiert, und ein kleiner aber entscheidender Bug behoben.
Die Variable BV in Create_Server udn Client wurde von ULong auf Long geändert.
Der Grund: Beim aufbau einer Verbindung (hauptsächlich Create_Client) würde ein falscher GURU-Code zurück gegeben, wenn der Ziel Computer nicht existiert, oder nicht erreichbar ist. Die hätte zur folge, das eine Verbindugn als OK signalisiert wird, obwohl keine Verbindung aufgebaut wurde. Die "connect()" funktion in TSNE_Create_Client liefert bei fehlerhaftem Verbindugnsaufbau eine -1 zurück welche natürlich nicht richtig in die ULong Variable gespeichert wird. Darum kann ein INVALID_SOCKET vergleich nicht korreckt durchgeführt werden, udn würde ein OK anstat ein Fehler liefert.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|