fb:porticula NoPaste
server.bas
Uploader: | ThePuppetMaster |
Datum/Zeit: | 26.12.2007 03:15:50 |
'##############################################################################################################
'TEST-SERVER für TSNE Version 2
'##############################################################################################################
'##############################################################################################################
' Die TCP Netzwerkbibliotek integrieren
#include "TSNE_V2.bi"
'##############################################################################################################
' Eine Variable für den Server-Handel erstellen
Dim G_Server as UInteger
'##############################################################################################################
' Deklarationen für die Empfänger Sub Routinen erstellen
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)
'##############################################################################################################
' Programm beginnen
Print "[INIT] Setup..."
' Variable für Statusrückgabe erstellen
Dim BV as Long
' Server etablieren und Pointer der Empfänger Sub Routinen übergeben.
BV = TSNE_Create_Server(G_Server, 1234, 10, @TSNE_NewConnection)
' Statusrückgabe auswerten
If BV = 0 Then
Print "[OK]"
Print "[WAIT] ..."
TSNE_WaitClose(G_Server)
Print "[WAIT] OK"
Print "[END]"
Else: Print "[FEHLER] " & TSNE_GetGURUCode(BV)
End if
End
'##############################################################################################################
Sub TSNE_Disconnected (ByVal V_TSNEID as UInteger)
' Empfänger für das Disconnect Signal (Verbindung beendet)
Print "[DIS] >" & V_TSNEID & "<"
End Sub
'##############################################################################################################
Sub TSNE_Connected (ByVal V_TSNEID as UInteger)
' Empfänger für das Connect Signal (Verbindung besteht)
Print "[CON] >" & V_TSNEID & "<"
End Sub
'##############################################################################################################
Sub TSNE_NewConnection (ByVal V_TSNEID as UInteger, ByVal V_RequestID as Socket)
' Empfänger für das NewConnection Signal (Neue Verbindung)
Dim TID as UInteger
Dim TIP as String
Print "[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_Disconnected, @TSNE_Connected, @TSNE_NewData)
' IP-Adresse der neuen Verbindung ausgeben
Print "[NIP] >" & TIP & "<"
End Sub
'##############################################################################################################
Sub TSNE_NewData (ByVal V_TSNEID as UInteger, ByRef V_Data as String)
' Empfänger für neue Daten
Print "[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