Heyho!
Kaum hab ich das eine Problem gelöst, taucht auch schon wieder ein neues auf!
Ich möchte nähmich ein Webinterface, also so ähnlich, wie es sie z.B. für mache Gameserver zum Verwalten gibt.
Ich habe jetzt schon ein Script für einnen Webserver it VB gefunden und auch schon einen "eigenen" Text eingefügt.
Wie kann ich jetzt ein Steuerelement einfügen, schauen, ob es betätigt wurde und das dann auswerten und so eine Aktion hervorrufen?
Das ganze soll bitte nicht über Apache oder PHP laufen!
Mein bisheriger Code:
Spoiler anzeigen
Die wichtige Codestelle ist markiert!
PS: ich weiss, Dns.Resolve ist eigentlich veraltet, aber so geht es am besten bei mir!
Kaum hab ich das eine Problem gelöst, taucht auch schon wieder ein neues auf!
Ich möchte nähmich ein Webinterface, also so ähnlich, wie es sie z.B. für mache Gameserver zum Verwalten gibt.
Ich habe jetzt schon ein Script für einnen Webserver it VB gefunden und auch schon einen "eigenen" Text eingefügt.
Wie kann ich jetzt ein Steuerelement einfügen, schauen, ob es betätigt wurde und das dann auswerten und so eine Aktion hervorrufen?
Das ganze soll bitte nicht über Apache oder PHP laufen!
Mein bisheriger Code:
VB.NET-Quellcode
- Imports System.Net
- Imports System.Net.Sockets
- Imports System.Threading
- Imports System.Text
- Imports System.IO
- Public Class WebServer
- Public Shared Sub Main()
- Try
- Dim hostName As String = Dns.GetHostName()
- Dim serverIP As IPAddress = Dns.Resolve(hostName).AddressList(0)
- Dim Port As String = "80"
- Console.WriteLine("Web server started at: " & serverIP.ToString() & ":" & Port)
- Dim httpSession As New HTTPSession(tcpListener)
- Dim serverThread As New Thread(New ThreadStart(AddressOf httpSession.ProcessThread))
- serverThread.Start()
- Catch ex As Exception
- Console.WriteLine(ex.StackTrace.ToString())
- End Try
- End Sub
- End Class
- Public Class HTTPSession
- Private tcpListener As System.Net.Sockets.TcpListener
- Private clientSocket As System.Net.Sockets.Socket
- Public Sub New(ByVal tcpListener As System.Net.Sockets.TcpListener)
- Me.tcpListener = tcpListener
- End Sub
- Protected Sub ProcessRequest()
- Dim recvBytes(1024) As Byte
- Dim htmlReq As String = Nothing
- Dim bytes As Int32
- Try
- ' Receive HTTP Request from Web Browser
- bytes = clientSocket.Receive(recvBytes, 0, clientSocket.Available, SocketFlags.None)
- htmlReq = Encoding.ASCII.GetString(recvBytes, 0, bytes)
- Console.WriteLine("HTTP Request: ")
- Console.WriteLine(htmlReq)
- ' Set WWW Root Path
- Dim rootPath As String = Directory.GetCurrentDirectory() & "\WWWRoot\"
- ' Set default page
- Dim defaultPage As String = "index.html"
- Dim strArray() As String
- Dim strRequest As String
- strArray = htmlReq.Trim.Split(" ")
- ' Determine the HTTP method (GET only)
- If strArray(0).Trim().ToUpper.Equals("GET") Then
- strRequest = strArray(1).Trim
- If (strRequest.StartsWith("/")) Then
- strRequest = strRequest.Substring(1)
- End If
- If (strRequest.EndsWith("/") Or strRequest.Equals("")) Then
- strRequest = strRequest & defaultPage
- End If
- strRequest = rootPath & strRequest
- sendHTMLResponse(strRequest)
- Else ' Not HTTP GET method
- strRequest = rootPath & "Error\" & "400.html"
- sendHTMLResponse(strRequest)
- End If
- Catch ex As Exception
- Console.WriteLine(ex.StackTrace.ToString())
- If clientSocket.Connected Then
- clientSocket.Close()
- End If
- End Try
- End Sub
- ' Send HTTP Response
- Private Sub sendHTMLResponse(ByVal httpRequest As String)
- Try
- ' Get the file content of HTTP Request
- '#######################################
- '#############wichtige Codestelle!#############
- '#######################################
- Dim strBuff As String = "Lool!!!, Das ist mein Text!"
- '#######################################
- '#############wichtige Codestelle!#############
- '#######################################
- ' The content Length of HTTP Request
- Dim respByte() As Byte = Encoding.ASCII.GetBytes(strBuff)
- ' Set HTML Header
- Dim htmlHeader As String = _
- "HTTP/1.0 200 OK" & ControlChars.CrLf & _
- "Server: Dan-Serv" & ControlChars.CrLf & _
- "Content-Length: " & respByte.Length & ControlChars.CrLf & _
- "Content-Type: " & getContentType(httpRequest) & _
- ControlChars.CrLf & ControlChars.CrLf
- ' The content Length of HTML Header
- Dim headerByte() As Byte = Encoding.ASCII.GetBytes(htmlHeader)
- Console.WriteLine("HTML Header: " & ControlChars.CrLf & htmlHeader & "Time: " & My.Computer.Clock.LocalTime)
- ' Send HTML Header back to Web Browser
- clientSocket.Send(headerByte, 0, headerByte.Length, SocketFlags.None)
- ' Send HTML Content back to Web Browser
- clientSocket.Send(respByte, 0, respByte.Length, SocketFlags.None)
- ' Close HTTP Socket connection
- clientSocket.Shutdown(SocketShutdown.Both)
- clientSocket.Close()
- Catch ex As Exception
- Console.WriteLine(ex.StackTrace.ToString())
- If clientSocket.Connected Then
- clientSocket.Close()
- End If
- End Try
- End Sub
- ' Get Content Type
- Private Function getContentType(ByVal httpRequest As String) As String
- If (httpRequest.EndsWith("html")) Then
- Return "text/html"
- ElseIf (httpRequest.EndsWith("htm")) Then
- Return "text/html"
- ElseIf (httpRequest.EndsWith("txt")) Then
- Return "text/plain"
- ElseIf (httpRequest.EndsWith("gif")) Then
- Return "image/gif"
- ElseIf (httpRequest.EndsWith("jpg")) Then
- Return "image/jpeg"
- ElseIf (httpRequest.EndsWith("jpeg")) Then
- Return "image/jpeg"
- ElseIf (httpRequest.EndsWith("pdf")) Then
- Return "application/pdf"
- ElseIf (httpRequest.EndsWith("pdf")) Then
- Return "application/pdf"
- ElseIf (httpRequest.EndsWith("doc")) Then
- Return "application/msword"
- ElseIf (httpRequest.EndsWith("xls")) Then
- Return "application/vnd.ms-excel"
- ElseIf (httpRequest.EndsWith("ppt")) Then
- Return "application/vnd.ms-powerpoint"
- Else
- Return "text/plain"
- End If
- End Function
- End Class
Die wichtige Codestelle ist markiert!
PS: ich weiss, Dns.Resolve ist eigentlich veraltet, aber so geht es am besten bei mir!
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „big-d“ ()