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:

Client vereinfachen...geht das so?

 
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
arduno



Anmeldungsdatum: 12.05.2011
Beiträge: 252

BeitragVerfasst am: 29.02.2012, 13:11    Titel: Client vereinfachen...geht das so? Antworten mit Zitat

Ich habe jetzt mal die einfache Version genommen für den Clienten.
Ich habe Verbindung zum TCP-Server.

Code:

#Include once "TSNE_V3.bi"
Dim G_Client_TSNEID as UInteger

Sub TSNE_Disconnected(ByVal V_TSNEID as UInteger)
Print "[Disconnected] TSNEID: "; V_TSNEID
End Sub

Sub TSNE_Connected(ByVal V_TSNEID as UInteger)
Print "[Connected] TSNEID: "; V_TSNEID
End Sub

Sub TSNE_NewData(ByVal V_TSNEID as UInteger, ByRef V_Data as String)
Print "[NewData] TSNEID: "; V_TSNEID; " Datenlänge: "; Len(V_Data)
End Sub

Dim RV as Integer
RV = TSNE_Create_Client(G_Client_TSNEID, "127.0.0.1",1435, @TSNE_Disconnected, @TSNE_Connected, @TSNE_NewData)
If RV <> TSNE_Const_NoError Then
    Print "[FEHLER] " & TSNE_GetGURUCode(RV)
    End -1
End If

TSNE_WaitClose(G_Client_TSNEID)
End 0

Print "ende...."
Sleep



Wie kann ich jetzt einen Server ähnlich klein aufbauen, der Verbindung zum Zuis-Programm hat , welches als Client tätig ist?

Danke.

Gruss
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



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

BeitragVerfasst am: 29.02.2012, 14:17    Titel: Antworten mit Zitat

So in etwa (ungetestet) könnte man das mit der neuen TSNE_V3.5 machen. (Version mit CallbackPtr)

Code:

'##############################################################################################################
#include once "TSNE_V3.bi"



'##############################################################################################################
Type Client_Type
   V_IPA            as String
   V_Data            as String
End Type



'##############################################################################################################
Sub TSNE_Disconnected(ByVal V_TSNEID as UInteger, ByVal V_CallBackPtr as Any Ptr)
If V_CallBackPtr = 0 Then Exit Sub
Print "[CLIENT] Disconnected: " & Cast(Client_Type Ptr, V_CallBackPtr)->V_IPA
DeAllocate(V_CallBackPtr)
End Sub



'##############################################################################################################
Sub TSNE_Connected(ByVal V_TSNEID as UInteger, ByVal V_CallBackPtr as Any Ptr)
If V_CallBackPtr = 0 Then Exit Sub
Print "[CLIENT] Connected: " & Cast(Client_Type Ptr, V_CallBackPtr)->V_IPA
End Sub



'##############################################################################################################
Sub TSNE_NewConnection(ByVal V_TSNEID as UInteger, ByVal V_RequestID as Socket, ByVal V_IPA as String)
Dim TNewTSNEID as UInteger
Dim TReturnIPA as String
Dim TClient as Client_Type = CAllocate(SizeOf(Client_Type))
*TClient->V_IPA = V_IPA
Dim RV as Integer = TSNE_Create_Accept(V_RequestID, TNewTSNEID, TReturnIPA, @TSNE_Disconnected, @TSNE_Connected, @TSNE_NewData, Cast(Any Ptr, @TClient))
If RV <> TSNE_Const_NoError Then
   DeAllocate(TClient)
   Print "[CLIENT] [FEHLER] " & TSNE_GetGURUCode(RV)
   Exit Sub
End If
Print "[CLIENT] New Connect: " & V_IPA
End Sub



'##############################################################################################################
Sub TSNE_NewData(ByVal V_TSNEID as UInteger, ByRef V_Data as String, ByVal V_CallBackPtr as Any Ptr)
If V_CallBackPtr = 0 Then Exit Sub
With *Cast(Client_Type Ptr, V_CallBackPtr)
   .V_Data += V_Data
   Print "[CLIENT] DATA: " & .V_IPA & "   DataLen:"; Len(.V_Data)
   .V_Data = ""
End With
End Sub



'##############################################################################################################
Dim TServerID as UInteger
Dim RV as Integer = TSNE_Create_Server(TServerID, 1236, 10, @TSNE_NewConnection)
If RV <> TSNE_Const_NoError Then
   Print "[SERVER] [FEHLER] " & TSNE_GetGURUCode(RV)
   End   0
End if
Print "[SERVER] OK!"
Do
   Sleep 10, 1
Loop until InKey() = Chr(27)
RV = TSNE_Disconnect(TServerID)
TSNE_WaitClose(TServerID)
End   0



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



Anmeldungsdatum: 12.05.2011
Beiträge: 252

BeitragVerfasst am: 29.02.2012, 15:19    Titel: Antworten mit Zitat

Jup, danke.

Hier kommt eine Fehlermeldung :
zusi-server.bas(35) error 25: Invalid data types in 'Dim TClient as Client_Type = CAllocate(SizeOf(Client_Type))'
zusi-server.bas(36) error 29: Expected pointer, before '->' in '*TClient->V_IPA = V_IPA'
zusi-server.bas(37) error 41: Variable not declared, TSNE_NewData in 'Dim RV as Integer = TSNE_Create_Accept(V_RequestID, TNewTSNEID, TReturnIPA, @TSNE_Disconnected, @TSNE_Connected, @TSNE_NewData, Cast(Any Ptr, @TClient))'
zusi-server.bas(37) error 55: Type mismatch, at parameter 7 (R_RemoteShownServerIPA) of TSNE_CREATE_ACCEPT() in 'Dim RV as Integer = TSNE_Create_Accept(V_RequestID, TNewTSNEID, TReturnIPA, @TSNE_Disconnected, @TSNE_Connected, @TSNE_NewData, Cast(Any Ptr, @TClient))'
zusi-server.bas(39) error 55: Type mismatch, at parameter 1 of DEALLOCATE() in 'DeAllocate(TClient)'

Der Bereich :

Code:

Dim TClient as Client_Type = CAllocate(SizeOf(Client_Type))
*TClient->V_IPA = V_IPA
Dim RV as Integer = TSNE_Create_Accept(V_RequestID, TNewTSNEID, TReturnIPA, @TSNE_Disconnected, @TSNE_Connected, @TSNE_NewData, Cast(Any Ptr, @TClient))
If RV <> TSNE_Const_NoError Then
   DeAllocate(TClient)
   Print "[CLIENT] [FEHLER] " & TSNE_GetGURUCode(RV)
   Exit Sub
End If



Gruss
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



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

BeitragVerfasst am: 29.02.2012, 15:24    Titel: Antworten mit Zitat

arduno hat Folgendes geschrieben:
zusi-server.bas(35) error 25: Invalid data types in 'Dim TClient as Client_Type = CAllocate(SizeOf(Client_Type))'

Invalid deswegen, weil nach Dim TClient as Client_Type noch ein PTR gehört zwinkern


arduno hat Folgendes geschrieben:
zusi-server.bas(36) error 29: Expected pointer, before '->' in '*TClient->V_IPA = V_IPA'

Eine folge des fehlenden PTR's

arduno hat Folgendes geschrieben:
zusi-server.bas(37) error 41: Variable not declared, TSNE_NewData in 'Dim RV as Integer = TSNE_Create_Accept(V_RequestID, TNewTSNEID, TReturnIPA, @TSNE_Disconnected, @TSNE_Connected, @TSNE_NewData, Cast(Any Ptr, @TClient))'

Die TSNE_NewData Sub muss über die TSNE_NewConnection Sub



arduno hat Folgendes geschrieben:
zusi-server.bas(37) error 55: Type mismatch, at parameter 7 (R_RemoteShownServerIPA) of TSNE_CREATE_ACCEPT() in 'Dim RV as Integer = TSNE_Create_Accept(V_RequestID, TNewTSNEID, TReturnIPA, @TSNE_Disconnected, @TSNE_Connected, @TSNE_NewData, Cast(Any Ptr, @TClient))'
zusi-server.bas(39) error 55: Type mismatch, at parameter 1 of DEALLOCATE() in 'DeAllocate(TClient)'

Du hast vermutlich nicht die aktuelle TSNE_V3.5 sondern eine vorherige.
Lade dir die aktuelle herunter, und packe sie in das verzeichniss mit rein, wo auch dieses app liegt.

Die neue TSNE_V3.5 ist erweitert und benötigt in den Sub's einen weiteren Parameter, welcher von der V3.4 und kleiner noch nicht unterstützt wurde.


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



Anmeldungsdatum: 12.05.2011
Beiträge: 252

BeitragVerfasst am: 29.02.2012, 15:52    Titel: Antworten mit Zitat

Jup, danke.
Ich habe die 3.5 vom 15.12

Gruss
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
Seite 1 von 1

 
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