Web Interface für Anwendung

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Chris_1658.

    Web Interface für Anwendung

    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

    VB.NET-Quellcode

    1. Imports System.Net
    2. Imports System.Net.Sockets
    3. Imports System.Threading
    4. Imports System.Text
    5. Imports System.IO
    6. Public Class WebServer
    7. Public Shared Sub Main()
    8. Try
    9. Dim hostName As String = Dns.GetHostName()
    10. Dim serverIP As IPAddress = Dns.Resolve(hostName).AddressList(0)
    11. Dim Port As String = "80"
    12. Console.WriteLine("Web server started at: " & serverIP.ToString() & ":" & Port)
    13. Dim httpSession As New HTTPSession(tcpListener)
    14. Dim serverThread As New Thread(New ThreadStart(AddressOf httpSession.ProcessThread))
    15. serverThread.Start()
    16. Catch ex As Exception
    17. Console.WriteLine(ex.StackTrace.ToString())
    18. End Try
    19. End Sub
    20. End Class
    21. Public Class HTTPSession
    22. Private tcpListener As System.Net.Sockets.TcpListener
    23. Private clientSocket As System.Net.Sockets.Socket
    24. Public Sub New(ByVal tcpListener As System.Net.Sockets.TcpListener)
    25. Me.tcpListener = tcpListener
    26. End Sub
    27. Protected Sub ProcessRequest()
    28. Dim recvBytes(1024) As Byte
    29. Dim htmlReq As String = Nothing
    30. Dim bytes As Int32
    31. Try
    32. ' Receive HTTP Request from Web Browser
    33. bytes = clientSocket.Receive(recvBytes, 0, clientSocket.Available, SocketFlags.None)
    34. htmlReq = Encoding.ASCII.GetString(recvBytes, 0, bytes)
    35. Console.WriteLine("HTTP Request: ")
    36. Console.WriteLine(htmlReq)
    37. ' Set WWW Root Path
    38. Dim rootPath As String = Directory.GetCurrentDirectory() & "\WWWRoot\"
    39. ' Set default page
    40. Dim defaultPage As String = "index.html"
    41. Dim strArray() As String
    42. Dim strRequest As String
    43. strArray = htmlReq.Trim.Split(" ")
    44. ' Determine the HTTP method (GET only)
    45. If strArray(0).Trim().ToUpper.Equals("GET") Then
    46. strRequest = strArray(1).Trim
    47. If (strRequest.StartsWith("/")) Then
    48. strRequest = strRequest.Substring(1)
    49. End If
    50. If (strRequest.EndsWith("/") Or strRequest.Equals("")) Then
    51. strRequest = strRequest & defaultPage
    52. End If
    53. strRequest = rootPath & strRequest
    54. sendHTMLResponse(strRequest)
    55. Else ' Not HTTP GET method
    56. strRequest = rootPath & "Error\" & "400.html"
    57. sendHTMLResponse(strRequest)
    58. End If
    59. Catch ex As Exception
    60. Console.WriteLine(ex.StackTrace.ToString())
    61. If clientSocket.Connected Then
    62. clientSocket.Close()
    63. End If
    64. End Try
    65. End Sub
    66. ' Send HTTP Response
    67. Private Sub sendHTMLResponse(ByVal httpRequest As String)
    68. Try
    69. ' Get the file content of HTTP Request
    70. '#######################################
    71. '#############wichtige Codestelle!#############
    72. '#######################################
    73. Dim strBuff As String = "Lool!!!, Das ist mein Text!"
    74. '#######################################
    75. '#############wichtige Codestelle!#############
    76. '#######################################
    77. ' The content Length of HTTP Request
    78. Dim respByte() As Byte = Encoding.ASCII.GetBytes(strBuff)
    79. ' Set HTML Header
    80. Dim htmlHeader As String = _
    81. "HTTP/1.0 200 OK" & ControlChars.CrLf & _
    82. "Server: Dan-Serv" & ControlChars.CrLf & _
    83. "Content-Length: " & respByte.Length & ControlChars.CrLf & _
    84. "Content-Type: " & getContentType(httpRequest) & _
    85. ControlChars.CrLf & ControlChars.CrLf
    86. ' The content Length of HTML Header
    87. Dim headerByte() As Byte = Encoding.ASCII.GetBytes(htmlHeader)
    88. Console.WriteLine("HTML Header: " & ControlChars.CrLf & htmlHeader & "Time: " & My.Computer.Clock.LocalTime)
    89. ' Send HTML Header back to Web Browser
    90. clientSocket.Send(headerByte, 0, headerByte.Length, SocketFlags.None)
    91. ' Send HTML Content back to Web Browser
    92. clientSocket.Send(respByte, 0, respByte.Length, SocketFlags.None)
    93. ' Close HTTP Socket connection
    94. clientSocket.Shutdown(SocketShutdown.Both)
    95. clientSocket.Close()
    96. Catch ex As Exception
    97. Console.WriteLine(ex.StackTrace.ToString())
    98. If clientSocket.Connected Then
    99. clientSocket.Close()
    100. End If
    101. End Try
    102. End Sub
    103. ' Get Content Type
    104. Private Function getContentType(ByVal httpRequest As String) As String
    105. If (httpRequest.EndsWith("html")) Then
    106. Return "text/html"
    107. ElseIf (httpRequest.EndsWith("htm")) Then
    108. Return "text/html"
    109. ElseIf (httpRequest.EndsWith("txt")) Then
    110. Return "text/plain"
    111. ElseIf (httpRequest.EndsWith("gif")) Then
    112. Return "image/gif"
    113. ElseIf (httpRequest.EndsWith("jpg")) Then
    114. Return "image/jpeg"
    115. ElseIf (httpRequest.EndsWith("jpeg")) Then
    116. Return "image/jpeg"
    117. ElseIf (httpRequest.EndsWith("pdf")) Then
    118. Return "application/pdf"
    119. ElseIf (httpRequest.EndsWith("pdf")) Then
    120. Return "application/pdf"
    121. ElseIf (httpRequest.EndsWith("doc")) Then
    122. Return "application/msword"
    123. ElseIf (httpRequest.EndsWith("xls")) Then
    124. Return "application/vnd.ms-excel"
    125. ElseIf (httpRequest.EndsWith("ppt")) Then
    126. Return "application/vnd.ms-powerpoint"
    127. Else
    128. Return "text/plain"
    129. End If
    130. End Function
    131. 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“ ()

    Servus,
    Bei mir funktionieren folgende Zeilen nicht:

    VB.NET-Quellcode

    1. Dim httpSession As New HTTPSession(TcpListener)
    2. Dim serverThread As New Thread(New ThreadStart(AddressOf httpSession.ProcessThread))


    Das sind die Fehlermeldungen:
    Fehler BC30109 "TcpListener" ist ein Klassentyp und kann nicht als Ausdruck verwendet werden.
    Fehler BC30456 "ProcessThread" ist kein Member von "HTTPSession"

    Was kann ich machen, dass es funktioniert?