Buchempfehlung
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
"Der" Petzold, das über 1000 Seiten starke Standardwerk zum Win32-API - besonders nützlich u. a. bei der GUI-Programmierung in FreeBASIC! [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

fb:porticula NoPaste

Info
Info / Hilfe
Liste
Übersicht / Liste
Neu
Datei hochladen
Suche
Quellcode suchen
Download
Dateidownload

TSNE Code - Client

Uploader:RedakteurMOD
Datum/Zeit:16.07.2010 23:10:47

#Include Once "TSNE_V3.bi"

Dim Shared As Integer partnerID
Type connectionType
    As UInteger G_Server, G_Client
    As Integer isServer
    As String IP

    Declare Constructor(Typ As String)
    Declare Destructor

    Declare Sub hosten
    Declare Sub connecten
    Declare Sub beenden
    Declare Sub senden(Message As String)
End Type

'Subs für TSNE-Kommunikation
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)

Constructor connectionType(Typ As String)
    If Typ = "Server" Then
        isServer = 1
        hosten
    ElseIf Typ = "Client" Then
        IP = "127.0.0.1"
        connecten
    Else
        IP = Typ
        connecten
    EndIf
End Constructor

Destructor connectionType
    beenden
End Destructor

Sub connectionType.beenden
    If isServer Then
        TSNE_Disconnect(G_Server)   'Server beenden
        TSNE_WaitClose(G_Server)    'Warten bis Server beendet ist
    Else
        TSNE_Disconnect(G_Client)   'Client beenden
        TSNE_WaitClose(G_Client)    'Warten bis Client beendet ist
    EndIf
End Sub

Sub connectionType.hosten
    Dim BV As Integer
    BV = TSNE_Create_Server(G_Server, 9000, 1, @TSNE_NewConnection, @TSNE_NewConnectionCanceled)    'Server erstellen
    If BV = TSNE_Const_NoError Then
        Print "Server bereit"
    Else
        Print "Fehler: " & BV
    EndIf
End Sub

Sub connectionType.connecten
    Dim BV As Integer
    BV = TSNE_Create_Client(G_Client, IP, 9000, @TSNE_Disconnected, @TSNE_Connected, @TSNE_NewData) 'Client erstellen
    If BV = TSNE_Const_NoError Then
        Print "Suche Server"
    Else
        Print "Fehler: " & BV
    EndIf
End Sub

Sub connectionType.senden(Message As String)
    TSNE_Data_Send(partnerID, Message)
End Sub

Sub TSNE_Disconnected(ByVal V_TSNEID as UInteger)
    'Handling, wenn disconnected wird
    Print V_TSNEID & " wurde disconnectet"
End Sub

Sub TSNE_Connected(ByVal V_TSNEID as UInteger)
    'neue Verbindung wurde aufgebaut
    Print "Nun mit " & V_TSNEID & " verbunden"
    partnerID = V_TSNEID
End Sub

Sub TSNE_NewConnection(ByVal V_TSNEID as UInteger, ByVal V_RequestID as Socket, ByVal V_IPA as String)
    'Wenn versucht wird, eine neue Verbindung herzustellen
    'Nur wichtig für den Server

    Print "Ein Client versucht zu verbinden"

    Dim XNewTSNEID as UInteger
    Dim XReturnIPA as String

    'Akzeptieren der Verbindung
    TSNE_Create_Accept(V_RequestID, XNewTSNEID, XReturnIPA, @TSNE_Disconnected, @TSNE_Connected, @TSNE_NewData)
End Sub

Sub TSNE_NewConnectionCanceled(ByVal V_TSNEID as UInteger, ByVal V_IPA as String)
    'Verhalten, wenn abgelehnt wird
    Print "Verbindung wurde abgelehnt"
End Sub

Sub TSNE_NewData(ByVal V_TSNEID as UInteger, ByRef V_Data as String)
    'Hier kommen die Daten an.
    '
    'V_Data enthält dabei die Daten
    'Die ID zeigt, woher die Daten kommen

    'Bei der Verarbeitung ist zu beachten, dass wenn
    'schnell hintereinander Daten eingehen und diese
    'Sub sie nicht schnell genug verarbeiten kann,
    'gehen die Daten verloren

    Print V_Data & " ::kommt von:: " & V_TSNEID
End Sub



Dim As connectionType myClient = "Client"

Do
    Sleep 300, 1
    myClient.senden("Ich bin eine Nachricht")
Loop Until InKey = Chr(27)

myClient.beenden