Buchempfehlung
Visual Basic 6 Kochbuch
Visual Basic 6 Kochbuch
Viele praktische Tipps zum Programmieren mit Visual Basic 6, die sich oft auch auf FB übertragen lassen. [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

ss

Uploader:MitgliedThePuppetMaster
Datum/Zeit:11.01.2008 14:09:29

'##############################################################################################################
'TEST-SERVER für TSNE Version 2 [DUAL-SERVER]
'##############################################################################################################



'##############################################################################################################
'    Die TCP Netzwerkbibliotek integrieren
#include "TSNE_V2.bi"



'##############################################################################################################
'    Eine Variable für den Server-Handel erstellen
Dim G_Server1 as UInteger
Dim G_Server2 as UInteger



'##############################################################################################################
'    Deklarationen für die Empfänger Sub Routinen erstellen [Server-1]
Declare Sub    TSNE_Disconnected1     (ByVal V_TSNEID as UInteger)
Declare Sub    TSNE_Connected1        (ByVal V_TSNEID as UInteger)
Declare Sub    TSNE_NewData1          (ByVal V_TSNEID as UInteger, ByRef V_Data as String)
Declare Sub    TSNE_NewConnection1    (ByVal V_TSNEID as UInteger, ByVal V_RequestID as Socket)

'##############################################################################################################
'    Deklarationen für die Empfänger Sub Routinen erstellen [Server-2]
Declare Sub    TSNE_Disconnected2     (ByVal V_TSNEID as UInteger)
Declare Sub    TSNE_Connected2        (ByVal V_TSNEID as UInteger)
Declare Sub    TSNE_NewData2          (ByVal V_TSNEID as UInteger, ByRef V_Data as String)
Declare Sub    TSNE_NewConnection2    (ByVal V_TSNEID as UInteger, ByVal V_RequestID as Socket)


'##############################################################################################################
'ALTERNATIV KANN MAN ES AUCH SO MACHEN (Jedoch wären dann die CLients nicht voneinander getrennt, was
'es sehr schwer macht den Client heraus zu finden. es wäre natürlich möglich die TSNE_ID aus einem Array
'herauf, welches hier im programm steht, zu vergleichen, jedoch wäre es unsinnig, da viel zu aufwendig und
'umständlich.

'    Deklarationen für die Client empfänger
'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)

'Für Server-1
'Declare Sub    TSNE_NewConnection1    (ByVal V_TSNEID as UInteger, ByVal V_RequestID as Socket)

'Für Server-2
'Declare Sub    TSNE_NewConnection2    (ByVal V_TSNEID as UInteger, ByVal V_RequestID as Socket)



'##############################################################################################################
'    Programm beginnen
'    Variable für Statusrückgabe erstellen
Dim BV as Long

Print "[SERVER-1] [INIT] Setup..."
'    Server etablieren und Pointer der Empfänger Sub Routinen übergeben.
BV = TSNE_Create_Server(G_Server1, 1234, 10, @TSNE_NewConnection1)
'    Statusrückgabe auswerten
If BV = 0 Then
    Print "[SERVER-1] [OK]"
Else: Print "[SERVER-1] [FEHLER] " & TSNE_GetGURUCode(BV)
End if

Print "[SERVER-2] [INIT] Setup..."
BV = TSNE_Create_Server(G_Server2, 4321, 10, @TSNE_NewConnection2)
If BV = 0 Then
    Print "[SERVER-2] [OK]"
Else: Print "[SERVER-2] [FEHLER] " & TSNE_GetGURUCode(BV)
End if

Print "[SERVER-1] [WAIT] ..."
Print "[SERVER-2] [WAIT] ..."
Do
    If G_Server1 > 0 Then
        If TSNE_IsClosed(G_Server1) = 1 Then
            Print "[SERVER-1] [WAIT] ENDE"
            G_Server1 = 0
        End If
    End If
    If G_Server2 > 0 Then
        If TSNE_IsClosed(G_Server2) = 1 Then
            Print "[SERVER-2] [WAIT] ENDE"
            G_Server2 = 0
        End If
    End If
Loop
Print "[PROGRAMM] [END]"
End



'##############################################################################################################
Sub TSNE_Disconnected1 (ByVal V_TSNEID as UInteger)
'    Empfänger für das Disconnect Signal (Verbindung beendet)
Print "[SERVER-1] [DIS] >" & V_TSNEID & "<"
End Sub



'##############################################################################################################
Sub TSNE_Connected1 (ByVal V_TSNEID as UInteger)
'    Empfänger für das Connect Signal (Verbindung besteht)
Print "[SERVER-1] [CON] >" & V_TSNEID & "<"
End Sub



'##############################################################################################################
Sub TSNE_NewConnection1 (ByVal V_TSNEID as UInteger, ByVal V_RequestID as Socket)
'    Empfänger für das NewConnection-1 Signal (Neue Verbindung)
Dim TID as UInteger
Dim TIP as String
Print "[SERVER-1] [NCO] >" & V_TSNEID & "<___>" & V_RequestID & "<"
'    Neue Verbindungsanfrage akzeptieren, Verbindungs-ID und IP-Adresse hohlen, Sub Routinen übergeben
TSNE_Create_Accept(V_RequestID, TID, TIP, @TSNE_Disconnected1, @TSNE_Connected1, @TSNE_NewData1)
'    IP-Adresse der neuen Verbindung ausgeben
Print "[SERVER-1] [NIP] >" & TIP & "<"
End Sub



'##############################################################################################################
Sub TSNE_NewData1 (ByVal V_TSNEID as UInteger, ByRef V_Data as String)
'    Empfänger für neue Daten
Print "[SERVER-1] [NDA] >" & V_TSNEID & "<___>" & V_Data & "<"
'Prüfen ob in Anfrage ein doppelter Zeilenumbruch vorhanden ist?
Dim CRLF as String
CRLF = Chr(13) & Chr(10)
If InStr(1, V_Data, CRLF & CRLF) > 0 Then
'    Zeilenumbruch wurde gefunden, HTTP Header erfolgreich empfangen
'    Zu sendende Daten vorbereiten
    Dim D as String
    D = "<html><head><title>blub</title></head><body>TSNE-Test-Server: OK [" & Str(V_TSNEID) & "]</body></html>"
'    HTTP Header und Daten senden
    TSNE_Data_Send(V_TSNEID, "HTTP/1.1 200 OK" & CRLF & "connection: close" & CRLF & CRLF & D)
'    Verbindung beenden
    TSNE_Disconnect(V_TSNEID)
End If
End Sub








'##############################################################################################################
Sub TSNE_Disconnected2 (ByVal V_TSNEID as UInteger)
'    Empfänger für das Disconnect Signal (Verbindung beendet)
Print "[SERVER-2] [DIS] >" & V_TSNEID & "<"
End Sub



'##############################################################################################################
Sub TSNE_Connected2 (ByVal V_TSNEID as UInteger)
'    Empfänger für das Connect Signal (Verbindung besteht)
Print "[SERVER-2] [CON] >" & V_TSNEID & "<"
End Sub



'##############################################################################################################
Sub TSNE_NewConnection2 (ByVal V_TSNEID as UInteger, ByVal V_RequestID as Socket)
'    Empfänger für das NewConnection-1 Signal (Neue Verbindung)
Dim TID as UInteger
Dim TIP as String
Print "[SERVER-2] [NCO] >" & V_TSNEID & "<___>" & V_RequestID & "<"
'    Neue Verbindungsanfrage akzeptieren, Verbindungs-ID und IP-Adresse hohlen, Sub Routinen übergeben
TSNE_Create_Accept(V_RequestID, TID, TIP, @TSNE_Disconnected1, @TSNE_Connected1, @TSNE_NewData1)
'    IP-Adresse der neuen Verbindung ausgeben
Print "[SERVER-2] [NIP] >" & TIP & "<"
End Sub



'##############################################################################################################
Sub TSNE_NewData2 (ByVal V_TSNEID as UInteger, ByRef V_Data as String)
'    Empfänger für neue Daten
Print "[SERVER-2] [NDA] >" & V_TSNEID & "<___>" & V_Data & "<"
'Prüfen ob in Anfrage ein doppelter Zeilenumbruch vorhanden ist?
Dim CRLF as String
CRLF = Chr(13) & Chr(10)
If InStr(1, V_Data, CRLF & CRLF) > 0 Then
'    Zeilenumbruch wurde gefunden, HTTP Header erfolgreich empfangen
'    Zu sendende Daten vorbereiten
    Dim D as String
    D = "<html><head><title>blub</title></head><body>TSNE-Test-Server: OK [" & Str(V_TSNEID) & "]</body></html>"
'    HTTP Header und Daten senden
    TSNE_Data_Send(V_TSNEID, "HTTP/1.1 200 OK" & CRLF & "connection: close" & CRLF & CRLF & D)
'    Verbindung beenden
    TSNE_Disconnect(V_TSNEID)
End If
End Sub