fb:porticula NoPaste
ss
Uploader: | ThePuppetMaster |
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