Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

[ Win/Linux ][ Netzwerk ] TSNE_V2 / V3 - Netzwerk-Modul
Gehe zu Seite Zurück  1, 2, 3, 4, 5, 6, 7, 8, 9, 10  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  

Wie findet Ihr dieses Projekt?
Super
80%
 80%  [ 16 ]
Gut
10%
 10%  [ 2 ]
Mittelmässig
10%
 10%  [ 2 ]
Schlecht (Warum?)
0%
 0%  [ 0 ]
Scheisse (Warum?)
0%
 0%  [ 0 ]
Stimmen insgesamt : 20

Autor Nachricht
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 25.08.2009, 14:36    Titel: Antworten mit Zitat

Hab mal ein kleines Tutorial zu TSNE_V3 geschrieben. Is zwar schon auf FBP vorhanden, aber noch nicht freigeschaltet. Da jedoch der Wettbewerb vor der Tür steht, und vieleicht einige mit TSNE arbeiten wollen, gibts hier mal ne vorläufige "release" vom Tutorial.


TNSE_V3 Tutorial


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]


Zuletzt bearbeitet von ThePuppetMaster am 01.02.2011, 00:13, insgesamt 2-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 25.08.2009, 15:22    Titel: Antworten mit Zitat

Hallo,

an dieser Stelle erst mal "sorry" an TPM dafür, dass ich mit dem Korrekturlesen noch nicht fertig bin! zwinkern Dadurch, dass in den nächsten Tagen die Umstellung auf FBP 2.0 bevorsteht, bin ich in den letzten Tagen zu nichts anderem mehr gekommen. lächeln

Viele Grüße!
Sebastian
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 25.08.2009, 16:36    Titel: Antworten mit Zitat

kein problem @ Sebastian ... ich habs nur online gestellt, weil in letzter zeit einige fragen diesbezüglich an mich gerichtet wurde und ich in letzter zeit nicht so viel online bin.

Ich freu mich schon auf die neue version von FBP grinsen ... bin schongespannt, wies aussehen wird. (Hoffentlich mit verbessertem Syntax highlighting)


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 27.08.2009, 00:50    Titel: Antworten mit Zitat

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


RemoteShownServerIPA ist ein String, und enthält nach dem Aufruf die IP-Adresse des eigenen Servers. Hierbei kann sich diese von Fall zu fall Unterschieden. Verbindet ein Client sich z.B. via "localhost" mit dem Server, erhält die Variable die IP-Adresse "127.0.0.1". Wird aus dem Internet eine Verbindung hergestellt, entsprechend eine WAN-IPA, und bei Verbindungen aus dem LAN entsprechend eine LAN-IPA

Ist ganz hilfreich, wenn man einen FTP-Server mit PASV coden will, ohne wilde Ermittlungstechniken der IPA.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 05.09.2009, 11:01    Titel: Antworten mit Zitat

Ich nutze das Thema mal für einen kurzen Statusbericht zu FBP 2.0.
ThePuppetMaster hat Folgendes geschrieben:
kein problem @ Sebastian ... ich habs nur online gestellt, weil in letzter zeit einige fragen diesbezüglich an mich gerichtet wurde und ich in letzter zeit nicht so viel online bin.

Ich freu mich schon auf die neue version von FBP grinsen ... bin schongespannt, wies aussehen wird. (Hoffentlich mit verbessertem Syntax highlighting)

Die Portalsoftware ist nun bereits seit Ende August fertig und auf dem neuen Server einsatzbereit, aber der bisherige Hoster des Projekts reagiert bislang nicht auf meinen KK-Antrag für die Domains freebasic-portal.de und fb-referenz.de, sodass ich die Domains leider noch nicht auf das neue Portal umstellen konnte. traurig Den Antrag habe ich am 31.08. per Fax eingeschickt und am 02.09. nochmals per Post - bisher ohne Erfolg.
Ich hoffe, dass bald endlich Bewegung in den Domainumzug kommt, denn das Portal sitzt ja sozusagen schon auf "gepackten Koffern", d. h. die Datenmigration ist Ende August erfolgt und alles, was seit dem bis jetzt auf dem Portal passiert, müsste manuell von mir in der neuen DB "nachgetragen" werden. traurig
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 23.08.2010, 16:55    Titel: Antworten mit Zitat

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)


Aufgrund eines Problems mit der Anzahl gleichzeitig zu erzeugender Sockets auf einem System / Prozess habe ich mich entschlossen eine weitere Konstante zu integrieren, welche beim erreichen dieses Limits zurückgegeben wird.

Das Limit ist System spezifisch und kann unter Windows / Linux unterschiedlich ausfallen.
Geschätzt sind Typisch 1024 Verbindungen (Sockets) möglich. Hierbei muss beachtet werden, das sowohl ein Server ein Socket als auch ein Client ein Socket belegt.

Werden in einem Programm 10 Server und 20 Client Verbindungen erzeugt verbraucht dies 30 Sockets für diesen Prozess. Ist das vom System veranschlagtem Maximum für diesen Prozess erreicht, gibt es einen Fehler. Das selbe geschieht, wenn das System ansich keien weiteren Sockets mehr erzeugen kann. Dieses Limit liegt bei 65535. Hier ist jedoch auch zu beachten, daß das System selbst auch Sockets verbraucht. z.B. für NetBIOS (win) oder für RPC Verbindungen.

Es ist also ziemlich unwarscheinlich, das dem Benutzer alle 65535 Sockets zu Verfügung stehen werden.


PS: Die ICMP Ping-Funktion ist noch nicht funktionsfehig!


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 01.10.2010, 20:08    Titel: Antworten mit Zitat

01.10.2010
KRITISCHE FEHLERBEHEBUNG

* Fehlerhafte select Auswertung für TCP Sockets beim skalieren einer TTY behoben.


Beim Skalieren einer TTY unter linux kann diese dazu führen, das die Select anweisung mit einem Fehler beendet wird, und so dem Thread-Handler ein geschlossenes Socket vorgaukelt. Dadurch können Server als auch Client-Verbindungen komplett geschlossen werden.
Bei Serveranwendungen die in einer kleinen Konsole z.B. unter GNOME oder KDE laufen, und sich skalieren kann (vorwiegend verkleinern), können Verbindungen zusammenbrechen. Da das Serversocket geschlossen ist, gibt es keien möglichkeit mehr für Clienten eine verbindung aufzubauen, bis der server erneut ein Server erzeugt hat.


Ich empfehle allen, deren Server nicht auf einer Konsole mit statischer grösse läuft, das Programm mit der aktuellen TSNE_V3 neu zu Kompilieren.
Andernfalls könnte ... muss nicht ... es zu einem Disconnect des Server's kommen. Das Programm "kracht" hierbei nicht ab. Nur das Socket ist geschlossen.
Wer das Serversocket per TSNE_IsClosed überwacht, wird hier wohl einen automatischen restart des Servers implementiert haben. Hier ist es zwar auch zu empfehlen, jedoch nicht kritisch!


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beethoven



Anmeldungsdatum: 09.10.2010
Beiträge: 2

BeitragVerfasst am: 09.10.2010, 23:01    Titel: Antworten mit Zitat

Hallo,
ich bekomme beim Kompilieren immer folgende Fehlermeldung:

test_smtp.o:fake:(.text+0x1a1b): undefined reference to `__errno_location'

WinXP FBC 0.21.1 TSNE_V3

Jemand eine Idee ?

Gruss

Juergen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 10.10.2010, 16:53    Titel: Antworten mit Zitat

Hi

Hab mal die errno funktion ausgeklammert. Die dient eigentlich nur zur fehlersuche bei fehlerhaft erzeugten sockets.

Ohne dem "zeug" funzt tsne ebenfalls.

habe eine aktualisierte version hochgeladen. sollte wieder funzen.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beethoven



Anmeldungsdatum: 09.10.2010
Beiträge: 2

BeitragVerfasst am: 11.10.2010, 08:42    Titel: Antworten mit Zitat

Jetzt geht es einwandfrei.

Danke !

Gruss

Juergen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 23.02.2011, 23:54    Titel: Antworten mit Zitat

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.


Der Grund für dieses Update findet sich Hier: Server mit mehreren Schnitstellen


Ein Passendes Beispiel gibts hier: Ein kleiner HTTP-Server der an eine IP-Adresse gebunden werden kann.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 24.02.2011, 00:44    Titel: Antworten mit Zitat

Könntest du bei Änderungen der aktuellen Version ein aktuelles Datum bzw. eine erhöhte Versionsnummer hinzufügen.
Seit einigen Versionen hat sich nichts mehr geändert und es wir schwer, die auseinander zuhalten, wenn sie lokal auf dem PC liegen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 24.02.2011, 13:07    Titel: Antworten mit Zitat

kann ich machen ... wenn ich daran denke ... aber, brauchst doch nur beim runterladen die alte version mit der neuen überschreiben lächeln

Die sind ja alle Abwertskompatibel, solange es V3 ist. grinsen


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 17.05.2011, 09:44    Titel: Antworten mit Zitat

17.05.2011

Ein Fehler in der "HTTP_Get" Funktion in TSNEX_V3 verursachte eine Falsche Übertragung der URL zum Server, wenn Dateinamen und Optionale Daten angehängt wurden.

z.B.
Http://test.de/index.html
oder
Http://test.de/index.html?abc=def

hierbei wurde die übertragung des "." sowie der Optionalen Daten nicht vorgenommen.


TSNEX_V3 Version wurde aktualisiert.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
schildron



Anmeldungsdatum: 25.08.2008
Beiträge: 86

BeitragVerfasst am: 12.08.2011, 11:00    Titel: Antworten mit Zitat

Hallo TSNE_V3!

Ich versuche Daten von meinem Client zu Meinem Server zu senden. Dies funktioniert schon, nur werden die Daten oft nicht einzeln sondern "zusammengeklebt" versant.

Beispiel:
Code:

Datensatz
Datensatz
DatensatzDatensatz
Datensatz
DatensatzDatensatzDatensatz
DatensatzDatensatzDatensatzDatensatzDatensatz
DatensatzDatensatzDatensatz
DatensatzDatensatzDatensatzDatensatzDatensatz
Datensatz
DatensatzDatensatz


Das verhindert in vielen Fälen das Parsen der Information, weil die Strings niht mehr in mein Schema passen. Idealerweise sollten die gesanten Informationen so aussehen:
Code:

Datensatz
Datensatz
Datensatz
Datensatz
Datensatz
Datensatz
Datensatz
Datensatz
Datensatz


Meinen Client initialisiere ich so:
Code:

ServerChecksum = TSNE_Create_Client(G_Client_TSNEID, ServerIP, 8080, @TSNE_Disconnected, @TSNE_Connected, @TSNE_NewData)


Server:
Code:
TSNE_Create_Server(G_Server, G_ServerPort, 20, @TSNE_NewConnection, 0)


Meine Daten sende ich vom Client so:
Code:
If G_Frames Mod (Int(G_FPS/45)+1) = 0 Then
TSNE_Data_Send(TSNE_Send_ID, "MyData;" & Str(ActivePlayer) & ";" & Str(Player(ActivePlayer).PosX) & ";" & Str(Player(ActivePlayer).PosY))
endif


Wenn jemand eine Lösung kennt, würde ich euch bitten, diese mir zu schreiben.


Danke!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 12.08.2011, 12:42    Titel: Antworten mit Zitat

Das Problem liegt hier nicht so sehr an TSNE wie an Windows (wie ich vermute, welches du nutzt)

Windows versucht hier Dattenpackete und damit eine Belastung des Netzwerk-Verkehrs zu verhindern, indem es zu Übertragende, kurze Daten, wenn möglich, zu grösseren Zusammen Packet, wenn diese innerhalb eines bestimmten Zeitfensters übertragen werden sollen.

Rufst du z.B. die Send Funktion von TSNE innerhalb von (z.B.) 1ms (Zeitangabe vermutung!) 2x Auf, so kann es passieren, das nicht 2 Datenpackete verschickt werden, sondern nur eines, in welchem die Daten zusammenhängend übertragen werden.

um Eine Auswertung auf der Empfangsseite vornehmen zu können kann man unterschiedliceh Techniken einsetzen.

Zum einen gäbe es das Simple Setzen von Marker (CRLF), nach jedem Datensatz.

Ist es nicht möglich Marker zu setzen, weil z.B. im Datensatz auch der Marker vorkommen kann, gibt es noch die Möglichkeit einen Datenstream zu erzeugen.

Hierbei wird vor dem Versenden des Datensatzes die Länge des Datensatzes Verschickt.

Beispiel:

DatenSatz:
Code:
"ABCD"



Was verschickt wird:
Code:
Chr(0) + Chr(0) + Chr(0) + Chr(4) + "ABCD"



Sendefunktion (Ungetestet):
Code:

Sub SendeDatensatz(V_TSNEID as UInteger, V_Daten as String)
Dim D as String = Space(4) 'Temporären String erzeugen
Cast(UInteger, StrPtr(D)) = Len(V_Data) 'Länge der zu versendenden Daten in die ersten 4 Byte des TempStr schreiben
D += V_Daten 'Daten anhängen
TSNE_Data_Send(V_TSNEID, D) 'Senden
End Sub


Hierbei packen wir einen UInteger (4 Byte) vor die eigentlichen Daten >jedes< gesendeten Packetes. Auf der Empfangsseite müssen wir die Daten anschiessend in eine Allgemeine Variabel Packen, bzw einfach alle Daten immer an diese Anhängen.

Zum Zerschneiden wird hier via Do-Loop solange diese Entsprechende Variable verarbeitet, bis dort keine Längenangaben mehr gefunden wurden.

(Ungetestet)
Code:

Dim Shared EingehendeDaten as String

Sub TSNE_NewData(ByVal V_TSNEID as UInteger, ByRef V_Data as String)
EingehendeDaten += V_Data 'Daten anhängen
Dim TLen as UInteger 'Temporäre Variable
Do
    If Len(EingehendeDaten) <= 4 Then Exit Sub 'Wenn zu wenig Daten vorhanden sind, exit
    TLen = Cast(UInteger, StrPtr(Left(EingehendeDaten, 4))) '4 Byte Längeninformation ausschneiden
    If Len(EingehendeDaten) < TLen + 4 Then Exit Do 'Prüfen ob Genügend Daten im Puffer sind, um den einzelnen Datensatz auszuschneiden
    Print "DatenSatz >"; Mid(EingehendeDaten, 5, TLen); "<" 'Datensatz ausschneiden udn ausgeben
    EingehendeDaten = Mid(TLen + 4) 'Datensatz aus Puffer löschen
    'Nächsten Datensatz suchen
Loop
End Sub


Selbes Verfahren wird übrigens auch in TSNE_Play verwendet.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4594
Wohnort: ~/

BeitragVerfasst am: 18.09.2011, 22:10    Titel: Antworten mit Zitat

Ich habe etwas Probleme mit der Beendigung des Clients. Ich verwende etwas ganz einfaches:
Code:
#INCLUDE "TSNE_V3.bi"

SUB Verbunden(BYVAL id AS UINTEGER) : END SUB
SUB Getrennt(BYVAL id AS UINTEGER) : END SUB
SUB NeueDaten(BYVAL id AS UINTEGER, BYREF daten AS STRING) : END SUB

DIM bv as INTEGER, Client AS UINTEGER
bv = TSNE_Create_Client(Client, "127.0.0.1", 1100, @Getrennt, @Verbunden, @NeueDaten)
IF bv <> TSNE_Const_NoError THEN PRINT "Server-Fehler: " & BV : END
TSNE_Data_Send 1, "Hallo Server!"
TSNE_Disconnect(Client)                   ' Client beenden
TSNE_WaitClose(Client)                    ' warten bis Client beendet ist

Das Problem ist, dass der Client seine Meldung ordnungsgemäß absetzt und dann meistens (aber nicht immer) hängen bleibt, bis der Server beendet wird. Setze ich vor das TSNE_Disconnect aber ein SLEEP 1000, dann klappt das Beenden bei den bisherigen Tests einwandfrei. Liegt da ein Fehler vor oder mache ich etwas falsch? Die Umgebung ist Debian.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 18.09.2011, 22:54    Titel: Antworten mit Zitat

nun ... ja und nein.

Das bei dir entstehende Problem ist die Folge einer noch nicht tatsächlich bestehenden Verbindung.

Zu den Hintergründen:
Der Aufruf von TSNE_Create_client erzeugt ein socket, setzt die parameter, sendet ein "verbindungswunsch an den server und erzeugt einen Socket-thread (line 863) mit der internen statuskennung 1 (line: 858) für einen Inizialisierten Thread

hat der thread seine Arbeit aufgenommen wird der status auf 2 gesetzt (Line: 1097).
Damit ist sichergestellt das der Thread läuft und in TSNE aktiv arbeitet. (Wichtig für ein sauberes Disconnect und den Master Thread)

Erst wenn der Status auf 2 Steht sollten (was ich wohl teilweise versäumt habe) alle weiteren Kommandos ausführbar sein.

Das Disconnect kommandos jedoch prüft, ob der Thread arbeitet (line: 661). Ist dies nicht der Fall verabschiedet sich die Funktion mit einem Fehlerlosem Returncode. (daher auch schwer mit dem GURU zu entdecken. Hier entsteht der Grund, warum das Prog hängen bleibt)

Dein Darauffolgendes TSNE_WaitClosed möchte nun natürlich solange warten bis das socket vollständig geschlossen wurde, was niemals eintreten wird, da nie ein Close (Line 667 in Disconnect) aufgerufen wurde.

soweit die dinge welche ich beheben könnte. (Einbauen von fehlercode für alle funktionen im halbeoffenem zustand einer verbindung)


zu deiner seite.
Zum einen wäre es sinvoll jeden returncode der funktionen zu prüfen. (Ausgenommen sind hier TSNE_WaitClosed, da diese kein Returncode bereitstellt)

Hätte meiner einer im Disconnect oder SendData eine entsprechenden fehlercode integriert, würde er dir gemeldet werden.

Warum dies so ist liegt an der tatsache, das du expliziet nach dem aufruf von create_xxx das senden von Daten sowie des disconnects aufrufst, obwohl der Thread noch nicht vollständig etabliert und somit halboffen ist.

Du rufst die funktionen auf, bevor tsne die verbindung als bereit markiert und damit sauber arbeiten kann.

Im eigentlichem sinne solltest du erst dann daten senden oder weitere commandos ausführen, nachdem das Connected Event gefeuert wurde. Ab diesem zeitpunkt gilt die Verbindung als vollständig aufgebaut (beiderseitig [server->client als auch client->server]).


Alternativ könntest du folgenden funktion hinzufügen:
Code:
Private Function TSNE_WaitConnected(ByRef V_TSNEID as UInteger, V_TimeOut as UInteger = 60) as Integer
Dim TSD as TSNE_Socket Ptr
Dim TTot as Double = Timer() + V_TimeOut
MutexLock(TSNE_INT_Mutex)
MutexunLock(TSNE_INT_Mutex)
Do
   MutexLock(TSNE_INT_Mutex)
   TSD = TSNE_INT_GetPtr(V_TSNEID)
   If TSD = 0 Then Exit Do
   If TTot < Timer() Then Exit Do
   If TSD->T_ThreadOn = 2 Then MutexUnLock(TSNE_INT_Mutex): Return TSNE_Const_NoError
   MutexUnLock(TSNE_INT_Mutex)
   Sleep 10, 1
Loop
MutexUnLock(TSNE_INT_Mutex)
Return TSNE_Const_CantConnectToRemote
End Function


du rufst sie direkt nach dem create_client auf.

Code:

sub NeueDaten(ByVal V_TSNEID as UInteger, ByRef V_Data as String)
end sub


DIM bv as INTEGER
dim Client AS UINTEGER
dim host AS STRING = "127.0.0.1"
bv = TSNE_Create_Client(Client, host, 1236, 0, 0, @NeueDaten)
IF bv <> TSNE_Const_NoError THEN PRINT "Fehler: " & TSNE_GetGURUCode(BV) : END
bv = TSNE_WaitConnected(Client)
IF bv <> TSNE_Const_NoError THEN PRINT "Fehler: " & TSNE_GetGURUCode(BV) : END
bv = TSNE_Data_Send(Client, "Hallo Server!")
IF bv <> TSNE_Const_NoError THEN PRINT "Fehler: " & TSNE_GetGURUCode(BV)
bv = TSNE_Disconnect(Client)
IF bv <> TSNE_Const_NoError THEN PRINT "Fehler: " & TSNE_GetGURUCode(BV) : END
TSNE_WaitClose(Client)


hiermit, als auch mit dem umpositionieren der disconnect und send_data in das connected event lässt sich das problem beheben.


allerdings werde ich diese funktion als auch die änderungen baldmäglichst integrieren und hochladen. Nur werde ich jetzt erstmal ne runde pennen gehen.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]


Zuletzt bearbeitet von ThePuppetMaster am 02.10.2011, 05:27, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 18.09.2011, 23:18    Titel: Antworten mit Zitat

Bedenke die Versionierung am Anfang der Datei. zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 02.10.2011, 05:12    Titel: Antworten mit Zitat

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.


@mod: Version ist: 3.5_20111002


@Community
Die Ping Funktion ist experimentel. Sie sollte auf Linux fehlerfrei arbeiten.
Auf Windows wurde sie noch nicht getestet, wäre aber für feedback deren Funktionalität unter Win Dankbar!


Bezüglich Version 3.5 Release:
Da die Grundlegend neue Funktion "TSNE_Ping" hinzugefügt wurde (Neues Protokoll ICMP).


Bezüglich xxx_Create_xxx & TSNE_WaitConnected:
Die Änderungen wurden aufgrund von folgendem Problem durchgeführt:
http://forum.qbasic.at/viewtopic.php?p=97426#97426
und der Lösung hierfür:
http://forum.qbasic.at/viewtopic.php?p=97427#97427


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite Zurück  1, 2, 3, 4, 5, 6, 7, 8, 9, 10  Weiter
Seite 6 von 10

 
Gehe zu:  
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.

 Impressum :: Datenschutz