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:

Server -> TSNE_V2.bi
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 23.02.2009, 23:03    Titel: Server -> TSNE_V2.bi Antworten mit Zitat

Hallo zusammen,
ich wollte mir eigendlich einen ganz einfachen Server entwickeln, mit Hilfe der Bibliothek TSNE_V2.bi

Was sollte er können?
Zuerst einmal sollte er auf Daten beim Port warten.

z.B. auf den Text: "Hallo du da drüben&passwort=12345"

Wenn der Text beim Server "Port" eingeht, dann soll es an den Clienten zuerst einmal folgendes schicken:

Ja, deine Daten, kamen bei mir an.
Dieser Text sollte dann auch beim Clienten logischerweise erscheinen.

Ist momentan sehr simple, aber mehr an Wissen benötige ich momentan nicht.

Im weiteren wollte ich etliches entwickeln.

Cu Andy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



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

BeitragVerfasst am: 24.02.2009, 01:06    Titel: Antworten mit Zitat

nun .. erstma würde ich sagen, nimmste die Version 3 von TSNE, weil die 2er nicht weiter entwickelt wird, und daher auch keine bugfixes mehr kommen.

Auf der >Projektseite sind einige beispiele zur serverentwicklung.

TSNE basiert auf sogenannten "Callback's" .. das heist, das tsne selbstständig funktionen aufrufen kann, die sich in deinem Programm befinden. Diese Funktionen muss man tsne mitteilen, wenn man einen Server oder client erstellt.

Tritt ein ereigniss auf, z.B. das ein client eine verbindugn wünscht, das neue daten eintreffen, das eine verbindung geschlossen wurde, usw. dann ruft tsne eine von dir in deinem programm festgelegte funktion auf. Anschliessend kannst du dieses ereigniss verasrbeiten, sofern es von nöten ist.


Das Simpelste Serverbeispiel ist wohl http://www.freebasic-portal.de/index.php?s=fbporticula&mode=show&id=740

Es ist ein extrem einfacher HTTP-Server. Der HTTP Teil, sprich, der teil, der das HTTP-Protokoll nachbildet ist ganz am ende zu finden. Das Beispiel ist vollständig und sehr umfangreich dokumentiert, und sollte keine probleme veruhrsachen.

Das Beispiel kann man als grundgerüt nutzt um allgemein server zu konstuieren. Es beinhaltet bereits eine einfache Client-Managment struktur, verwaltung von eingehenden Daten, Maximal verbindungen, automatische annahme von clienten, usw.

Im grunde brauchst du, wenn du kein HTTP willst, nur den teil nach:
Code:
'Hier können wir jetzt unsere Daten verarbeiten welche in TData stehen

löschen. Dies ist nämlich der teil vom Server, der das HTTP-Protokoll implementiert.

Statdessen kannst du dann deine eigenen routinen verwenden und einbauen.

Allerdings schlage ich einfach mal vor, das du dir das ganze durchliest, bevor du was löscht, weil dort auch beschrieben wird, wie man mit den Threads und mutexen umgeht so, wie das senden von Daten.


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



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 24.02.2009, 18:12    Titel: Antworten mit Zitat

Sorry,
aber ich komme kein Stück weiter.
Zudem bekomme ich Fehler, wenn ich das Beispielprogramm "http Server" verwende.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 24.02.2009, 18:40    Titel: Antworten mit Zitat

Andy19312 hat Folgendes geschrieben:

Sorry,
aber ich komme kein Stück weiter.

Dann ist das vllt. noch kein Thema für dich?
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 24.02.2009, 18:40    Titel: Antworten mit Zitat

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 24.02.2009, 18:42    Titel: Antworten mit Zitat

Du benutzt den IE?! Zunge rausstrecken
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 24.02.2009, 19:08    Titel: Antworten mit Zitat

Glaubst du etwa, ich erstell mir das Bild nochmal extra mitn Firefox!?
Oder schreib mir nen zweizeiler der mir die Messagebox erzeugt? Nene, dafür bin ich doch viel zu faul Zunge rausstrecken

Ich hab mich beim Lesen seines Posting nur daran erinnert, dass ich dochmal so ein Bild auf der Platte hatte^^
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



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

BeitragVerfasst am: 25.02.2009, 01:15    Titel: Antworten mit Zitat

@Andy19312

ein fehler ist nicht schön, das geb ich zu, aber wenn du möchtest, das ich dir auch helfen, ihn zu beseitigen, wäre e sganz hilfreich, wenn du mir den fehler mit in deine antwort postest zwinkern


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



Anmeldungsdatum: 22.10.2005
Beiträge: 428

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

Code:


#include once"TSNE_V3.bi"                            'Die TCP Netzwerkbibliotek integrieren

Dim Shared G_Server        as UInteger                    'Eine Variable für den Server-Handel erstellen

Sub TSNE_NewConnection (ByVal V_TSNEID as UInteger, ByVal V_RequestID as Socket, ByVal V_IPA as String)
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'Beschreibung: Wird ausgelösst 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                = Enthält eine Socket-Nummer welche den Anfragenden Identifiziert und muss bei einem
'                              TSNE_Create_Accept übergeben werden!
'V_IPA                        = Enthält die IP-Adresse des Anfragenden.
end sub
Sub TSNE_NewConnectionCanceled (ByVal V_TSNEID as UInteger, ByVal V_IPA as String)
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'Beschreibung: Wird ausgelösst 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                        = Enthält die IP-Adresse des Anfragenden.
end sub
Sub TSNE_NewData (ByVal V_TSNEID as UInteger, ByRef V_Data as String)
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'Beschreibung: Wird ausgelösst wenn eine Verbindung neue Daten Empfangen hat.
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'V_TSNEID                    = Hier findet sich die TSNE-ID der Verbindung, welche neue Daten empfangen hat.
'V_Data                        = Enthält die Daten, welche Empfangen wurden. (KEIN 0-Terminierter ZString!!!)
end sub
do
Dim RV as Long                                        'Eine Statusrückgabe Variable
RV = TSNE_Create_Server(G_Server, 1234, 10, @TSNE_NewConnection, @TSNE_NewConnectionCanceled)    'Server erstellen
sleep 1000
loop
sleep


Sodelle, also einen Server dürfte ich doch erstellt haben.
Nun meine Frage, wie kann ich auf Daten warten.
z.B schickt jemand auf den Port 1234 "HALLO WELT" dann sollte der Server daraufhin dem Client antworten "JA HALLO WELT".

Wiegesagt habe ich mit Port Erstellung noch nie was am Hut gehabt.
Nur ich möchte es gerne hinbekommen.
Ich denke mal, dafür ist doch ein Forum da oder?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 25.02.2009, 20:43    Titel: Antworten mit Zitat

Code:
#Include Once "TSNE_V3.bi"

Declare Sub   TSNE_Disconnected(ByVal V_TSNEID as UInteger)
Declare Sub   TSNE_Connected(ByVal V_TSNEID as UInteger)
Declare Sub   TSNE_NewData(ByVal V_TSNEID as UInteger, ByRef V_Data as String)
Declare Sub TSNE_NewConnection(ByVal V_TSNEID as UInteger, ByVal V_RequestID as Socket, ByVal V_IPA as String)
Declare Sub TSNE_NewConnectionCanceled(ByVal V_TSNEID as UInteger, ByVal V_IPA as String)

Dim Shared As UInteger Server
Dim As Integer ret

ret = TSNE_Create_Server(Server, 1234, 20, @TSNE_NewConnection, @TSNE_NewConnectionCanceled)
If ret <> -1 Then
   Print "Fehler", TSNE_GetGURUCode(ret)
   Sleep
   End
EndIf
Print "ok"

Do
   Sleep 1
Loop Until InKey = Chr(27)

TSNE_Disconnect(Server)
TSNE_WaitClose(Server)

End


Sub TSNE_Disconnected(ByVal V_TSNEID as UInteger)
   Print "Verbindung getrennt"
End Sub
Sub TSNE_Connected(ByVal V_TSNEID as UInteger)
   Print "Verbindung hergestellt",V_TSNEID
End Sub
Sub TSNE_NewConnection(ByVal V_TSNEID as UInteger, ByVal V_RequestID as Socket, ByVal V_IPA as String)
   Dim XNew_TSNEID as UInteger
   Dim XReturnIPA as String
   Print "Verbinde mit Client - IP: " & V_IPA
   TSNE_Create_Accept(V_RequestID, XNew_TSNEID, XReturnIPA, @TSNE_Disconnected, @TSNE_Connected, @TSNE_NewData)
   Print "Verbindung mit " & XReturnIPA & " hergestellt"
End Sub
Sub TSNE_NewData(ByVal V_TSNEID as UInteger, ByRef V_Data as String)
   TSNE_Data_Send(V_TSNEID,"JA"+V_Data)
End Sub
Sub TSNE_NewConnectionCanceled(ByVal V_TSNEID as UInteger, ByVal V_IPA as String)
   Print "Blocke " & V_IPA
End Sub


So in der Art vielleicht?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



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

BeitragVerfasst am: 25.02.2009, 20:53    Titel: Antworten mit Zitat

Also .. noch kompackter is es fast nicht möglich.

Code:
#include once "TSNE_V3.bi"



'##############################################################################################################
'Dieses Callback ist für den Empfang neuer Daten zuständig.
Sub TSNE_NewData(ByVal V_TSNEID as UInteger, ByRef V_Data as String)
'Die Funktion übermitelt die TSNE-ID der Verbindung, welche uns daten gesendet hat
'sowie in V_Data, die eigentlichen Daten selbst, die versendet wurden.
Print "Neue Daten: ["; V_TSNEID; "] "; V_Data

'Da wir auf ein bestimmtes Datenpacket waren, prüfen wir jetzt, ob das Datenpacket auch das ist, das wir suchen
If V_Data = "HALLO WELT" Then
   'Ist das gesuchte Datenpacket das, was wir wollen, dann antworten wir
   'Dabei nutzen wir die TSNEID die uns die daten gesendet hat und schicken an diese unsere antwort zurück
   TSNE_Data_Send(V_TSNEID, "JA HALLO WELT")
End If
End Sub



'##############################################################################################################
'Dies ist das Callback für eine neue Verbindungsanfrage eines Clienten an unseren Server
Sub TSNE_NewConnection(ByVal V_TSNEID as UInteger, ByVal V_RequestID as Socket, ByVal V_IPA as String)
Dim TNewTSNEID as UInteger   'Diese Variable speichert die TSNE-ID der neuen, akzeptierten Verbindung
Dim TReturnIPA as String   'Das ist die IP-Adresse der akzeptierten verbindung

'Hier akzeptieren wir die Verbindungsanfrage, die durch die "RequestID" identifiziert wird.
'Die Funktion liefert uns anschliessend die neue TSNE-ID dieser akzeptierten verbindung zurück
'sowie die IP-Adresse der Verbindung.
'Auserdem müssen wir der verbindung noch unsere Callbacks mitteilen
'Die erste 0 ist für ein nicht existentes Disconnect callback
'die zweite 0 für ein nicht existentes Connected callback
'und der letzte Pointer zeigt auf ein NewData callback, das empfangene Daten signalisiert
Dim RV as Integer = TSNE_Create_Accept(V_RequestID, TNewTSNEID, TReturnIPA, 0, 0, @TSNE_NewData)
'In RV steht dann deie Statusnummer (GURU-Code)

If RV <> TSNE_Const_NoError Then                        'Ist diese Rückgabe ungleich der Konstante TSNE_Const_NoError
   Print "Neue Verbindung: [FEHLER] "; TSNE_GetGURUCode(RV)   'Dann entstand ein fehler, und wir geben diesen fehler aus.
                                                'ein solcher Fehler führt meist dazu, das die verbindung nicht
                                                'akzeptiert werden konnte
Else                                             'ansonsten
   Print "Neue Verbindung: ["; NewTSNEID; "] [OK] "; V_IPA;   'ist die verbindung erfolgreich gewesen.
End if
End Sub



'##############################################################################################################
'Das ist das Hauptprogramm

Dim Shared G_Server as UInteger                           'Zuerst erstellen wir eien Variable, welche die TSNE-ID des servers speichert
                                                'Diese ID identifiziert den Server selbst, und nicht die clienten.
                                                'Jede Verbindung, Ob server oder client, bekommt eine eigene TSNE-ID

'Jetzt erstellen wir den eigentlichen Server, dessen ID in G_Server gespeichert wird.
'Nötig sind mindestens 3 zusätzliche Parameter, die einmal den Port (1234), dann die Anzahl simultaner Verbindungsanfragen
'welche zwischengespeichert werden sollen (10), sowie ein Callback, das für die entgegennahme der Verbindungswünsche zuständig ist.
'die letzte 0 ist ein Callback auf eine nicht existente Callback struktur, die bei automatisch abgewiesenen Verbindungswünschen aufgerufen würde
'Da wir jedoch keine Black oder Whitelist verwenden, brauchen wir diese auch nicht angeben, also kommt eien 0 rein.
Dim RV as Integer = TSNE_Create_Server(G_Server, 1234, 10, @TSNE_NewConnection, 0)

'Anschliessend schon wie bei der NewConnection funktion auch, prüfen wir den erfolg dieses Aufrufs.
If RV <> TSNE_Const_NoError Then
   Print "[SERVER] [FEHLER] " & TSNE_GetGURUCode(RV)
   Print "[END]"                                 'Da wir ohne Server keinen Server haben, beenden wir das Programm.
   End   0                                       'Mit Returncode 0
End if


'ansonsten melden wir den erfolgreiche erstellung des Servers
Print "[SERVER] wait for ESC push..."                  'Ausgeben das wir auf ein ESC Tastendruck warten
Do                                             'Wir poolen den Tastenabfrage
   Sleep 1, 1                                    'Kurz warten um die CPU auslastung massiv zu verringern
Loop until InKey() = Chr(27)                        'Prüfen ob ein ESC gedrückt wurde. Wenn ja, dann shcleife verlassen
Print "[SERVER] ESC pushed!"                        'Und ausgeben was wir das ESC erkannt haben
Print "[SERVER] Disconnecting..."                     'Mitteilen das wir den Server beenden
RV = TSNE_Disconnect(G_Server)                        'Server-Socket beenden
If RV <> TSNE_Const_NoError Then Print "[SERVER] [FEHLER] " & TSNE_GetGURUCode(RV)   'Wenn ein Fehler entstand, dann geben wir diesen aus
Print "[SERVER] Wait disconnected..."                  'Ausgeben das wir trotzdem auf den Disconnect warten
TSNE_WaitClose(G_Server)                           'Wir warten auf das ende der serververbindung
Print "[SERVER] Disconnected!"                        'Server wurde beendet
Print "[END]"                                    'Wir sind fertig
End   0                                          'Und beenden das Programm mit dem Returncode: 0


Aber das ist in etwa der kleinste Server, den man so schreiben kann. Natürlich kann man hier noch massig komprimieren, udn eventuell vieles raus nehmen, das eigentlich unnötig ist, aber um dir zu verdeutlichen, was wie wann funktioniert, ist das wohl die kleinste Version.


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


Zuletzt bearbeitet von ThePuppetMaster am 26.02.2009, 03:27, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 25.02.2009, 21:22    Titel: Antworten mit Zitat

Der Programmiercode funktioniert leider nicht ;(
Ich bekomme Fehlermeldung wie :
Code:

C:/Programme/FreeBASIC/server.bas(38) error
 41: Variable not declared, TSNE_Const_NoError in 'IF RV <> TSNE_Const_NoError THEN                        'Ist diese Rückgabe ungleich der Konstante TSNE_Const_NoError'
C:/Programme/FreeBASIC/server.bas(38) warning 12(0): Implicit variable allocation, TSNE_Const_NoError
C:/Programme/FreeBASIC/server.bas(43) error 41: Variable not declared, V_NewTSNEID in 'PRINT "Neue Verbindung:   "; V_IPA;   'ist die verbindung erfolgreich gewesen.'
C:/Programme/FreeBASIC/server.bas(43) warning 12(0): Implicit variable allocation, V_NewTSNEID
C:/Programme/FreeBASIC/server.bas(64) warning 12(0): Implicit variable allocation, TSNE_Const_NoError


seltsam
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 25.02.2009, 21:35    Titel: Antworten mit Zitat

Mein Code geht, aber ich benutze nicht die aktuellste Version von V3, weil die neuste bei mir Probleme mit Pointern hat.

@TPM: So nebenbei, kann man die V_TSNEID neuer Verbindungen beeinflussen, sodass freigewordene IDs neu vergeben werden?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 25.02.2009, 21:43    Titel: Antworten mit Zitat

@Mod hast du einen Link?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 25.02.2009, 22:05    Titel: Antworten mit Zitat

Ich glaube ich benutze diese Version:

http://www.freebasic-portal.de/index.php?s=fbporticula&mode=show&id=742
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 25.02.2009, 22:30    Titel: Antworten mit Zitat

es funktioniert;)

Ich musste das Programm FreeBasic 0.20.0b nehmen.

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



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

BeitragVerfasst am: 26.02.2009, 03:32    Titel: Antworten mit Zitat

MOD hat Folgendes geschrieben:
@TPM: So nebenbei, kann man die V_TSNEID neuer Verbindungen beeinflussen, sodass freigewordene IDs neu vergeben werden?
Wie meinst du das? .. das die TSNE-ID nicht vortlaufend ist, sondern die freigewordenen nummern verwendent? .. so wie es bei V2 der fall war? .. wenn ja, dann nein. das wurde vorsätzlich abgeschafft, das es bei einigen zu problemen kann, die diese nummer als Array-Index verwendet haben. Da man diese nummer nicht als array-index nutzen soll, hab ich das abgeschaft, da sie dafür nitch geeigent sind. Die ID's selbst sind TSNE-Interne nicht thread safe, udn können so bei array-zugriffen oder callback aufruhen zu einem crash des eigenen Progs führen. Um das zu verhindern soll man selbst eine managment funktion bauen, die mit einem Mutex abgesichert ist, und den zugriff auf ein Array oder einer Linked list diese schützt.


@Andy19312

Meinst du, das man es nur mit FB 0.20.0b compilieren kann? Wenn ja, welcher FBC version hast du genutzt, als es nicht funktioniert hat?

Zu den Fehlen. Das war mein missgriff in source. Ich habe ausversehen stat TNewTSNEID ein V_NewTSNEID geschrieben.
Wobei mir aber nicht daran gelegen war dir einen funktionsfehigen source zu leifern, sondern dir verständlich zu machen, was wann, udn vorallem wie funktioniert, was nötig ist, und wie man es anzuwenden hat.


@MOD
Die von dir gepostete version ist ziemlich alt. Sie hat noch keien erweiterung bezüglich der ThreadSize integriert, und kann bei umfangreicheren und vorallem bei grösserem Stackverbrauch zu problemen führen. Hier fehlt bei der erstellung der Threads eine entsprechende angabe über die ThreadStackSize grösse, die in der aktuellen, und einigen vorläuferversionen auf rund 50K gestellt wurde. In der aktuellen DEV Version ist sie auf 150K, da noch einige umfangreichere funktionsaufrufe mit vielen variablen udn maipulativen operationen von Strings immernoch einen Crash verursacht haben.

Leider ist das zwischen win und lineus etwas unterschiedlich. Bei win scheint die angabe nichts zu bewirken, bei linux hingegen schon. Dort beeinflusst sie offensichtlichwin der tat die stackgrösse. Mir ist nicht bekannt, wie gross der von FB angegebene vordefinierte Stack war, da ich dies in den changelogs nicht gefunden habe. Daher muss ich mich hier aufs "ausprobieren" beschränken.


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



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 26.02.2009, 11:29    Titel: Antworten mit Zitat

@ThePuppetMaster = Das was du auf die Beine gestellt hast, ist ein Wunderwerk. Ich hatte vorher die Version 0.18.5b gehabt.

Naja noch eine Frage:"
Wenn ich

Code:

#INCLUDE ONCE"TSNE_V2.bi"

DIM taste AS STRING


SUB TSNE_Connect (BYVAL V_TSNEID AS UINTEGER)
DIM T_ZuSenden AS STRING

T_ZuSenden += "HALLO WELT" & CHR(13, 10)   

DIM T_GuruCode AS LONG
T_GuruCode = TSNE_Data_Send(V_TSNEID, T_ZuSenden)
IF T_GuruCode <> 0 THEN
    PRINT "["; T_GuruCode; "] "; TSNE_GetGURUCode(T_GuruCode)
    TSNE_Disconnect(V_TSNEID)
ELSE
    PRINT "Versand erfolgreich!"
END IF
END SUB

SUB TSNE_NewData (BYVAL V_TSNEID AS UINTEGER, BYREF V_Data AS STRING)
PRINT V_Data
END SUB


DIM T_TSNEID AS UINTEGER
DIM T_GuruCode AS LONG
T_GuruCode = TSNE_Create_Client(T_TSNEID, "ipadresse", 1234, @TSNE_Disconnect, @TSNE_Connect, @TSNE_NewData)
IF T_GuruCode <> 0 THEN
    PRINT "["; T_GuruCode; "] "; TSNE_GetGURUCode(T_GuruCode)
    END -1
END IF
PRINT "Erfolgreich!"


SLEEP


ausführe, dann bekomme ich wiegesagt nicht "JA HALLO WELT" zurück.

V_Data wird nichts ausgegeben
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



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

BeitragVerfasst am: 26.02.2009, 15:40    Titel: Antworten mit Zitat

Code:
T_GuruCode = TSNE_Create_Client(T_TSNEID, "ipadresse", 1234, @TSNE_Disconnect, @TSNE_Connect, @TSNE_NewData)


"ipadresse"
ist keien IP-Addresse ... das ist ein string mit dem text "ipadresse" .. nicht "mln.ath.cx" oder "192.168.0.1" oder ähnliches


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: 26.02.2009, 17:14    Titel: Antworten mit Zitat

Hmm...hab mir schon gedacht, dass es nicht geht.

Ich verwende die ältere Version, weil sie keine Fehler verursacht

(Fehler: TSNE_V3.bi(682) warning 3(1): Passing different pointer types, at parameter 4 of SETSOCKOPT() - hat dir 28398 glaub ich schon gesagt.)

Bezüglich des Stacks hab ich mal was im englischen Manual was gesehen:

Zitat:
The -t compiler option sets the stack size in kilobytes (defaults to 1024 KBytes).
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 -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
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