Eigener Webserver URL herausbekommen

  • Ich entwickel gerade einen Webserver und habe folgendes Problem...

    Wie bekomme ich die URL des Clienten (Webbrowsers) heraus?
    Das Problem, meine index.html (wenn man meine IP : Port aufruft) wird richtig angezeigt , nur den Seitenwechsel kann ich leider noch nicht lösen.

    Per TCPRecv bekomme ich einige Daten vom Browser, leider kann ich dort keine URL sehen


    Empfangene Daten:

    Code
    GET / HTTP/1.1
    Host: XXXX:XXXX
    Connection: keep-alive
    Cache-Control: max-age=0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36
    Accept-Encoding: gzip,deflate,sdch
    Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
    Cookie: auth=46359466023450036; testcookie

    2 Mal editiert, zuletzt von Seppi123 (10. Dezember 2013 um 13:01)

  • Hmm , schonmal danke , aber warum wird bei mir keine Datei angezeigt?

    [autoit]


    #cs

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    #ce

    [/autoit][autoit][/autoit][autoit]

    #include <Array.au3>
    #include <String.au3>
    #include <File.au3>

    [/autoit][autoit][/autoit][autoit]

    TCPStartup()

    [/autoit][autoit][/autoit][autoit]

    $g_IP = @IPAddress1
    $port = 8567
    $maxconnections = 100
    $wwwdir = @ScriptDir & "\htdocs"
    $CurrentFile = "index.html"

    [/autoit][autoit][/autoit][autoit]

    ConsoleWrite("Server startet: "&$g_IP&":"&$port)

    [/autoit][autoit][/autoit][autoit]

    Local $MainSocket = TCPListen($g_IP, $port, $maxconnections)
    If $MainSocket = -1 Then
    ConsoleWrite("Port ist blockiert von einem anderen Programm!")
    Exit
    EndIf

    [/autoit][autoit][/autoit][autoit]

    While 1
    Local $ConnectedSocket = TCPAccept($MainSocket)
    If $ConnectedSocket >= 0 Then
    ConsoleWrite(@CRLF&@CRLF&@YDAY&"."&@MON&"."&@YEAR&"-"&@HOUR&":"&@MIN&":"&@SEC&" - Client hat sich mit dem Server verbunden!")
    $BrowserInformations = TCPRecv($ConnectedSocket, 99999)
    FileWrite(@ScriptDir & "\log\browserlog_"&TimerInit()&".txt", $BrowserInformations)
    $Securitytoken = Random(10000000, 99999999)
    FileWrite(@ScriptDir & "\usr\securitytoken"&$ConnectedSocket&".txt", $Securitytoken)
    _SendHTML(FileRead($wwwdir & "\index.html"), $ConnectedSocket, "securitytoken="&$Securitytoken&"_"&$ConnectedSocket)
    EndIf
    WEnd

    [/autoit][autoit][/autoit][autoit]

    Func _SendHTML($sHTML, $sSocket, $cookie = "")
    Local $iLen, $sPacket, $sSplit
    If $cookie <> "" Then
    $cookie = "Set-Cookie: " & $cookie & @CRLF
    EndIf

    [/autoit][autoit][/autoit][autoit]

    $iLen = StringLen($sHTML)
    $sPacket = Binary("HTTP/1.1 200 OK" & @CRLF & _
    "Server: SWHost/1.0 (" & @OSVersion & ")"&@CRLF& _
    "Connection: close" & @CRLF & _
    "Content-Lenght: " & $iLen & @CRLF & _
    $cookie & _
    "Content-Type: text/html" & @CRLF & _
    @CRLF & _
    $sHTML)
    $sSplit = StringSplit($sPacket, "")
    $sPacket = ""
    For $i = 1 To $sSplit[0]
    If Asc($sSplit[$i]) <> 0 Then ; Just make sure we don't send any null bytes, because they show up as ???? in your browser.
    $sPacket = $sPacket & $sSplit[$i]
    EndIf
    Next
    TCPSend($sSocket, $sPacket)
    EndFunc ;==>_SendHTML

    [/autoit]
  • Problem gelöst :) - Bzw. hat sich von selbst gelöst ;)

    Anscheinend ist die index.html nur ein Slash "/" und alle weiteren Dateien werden nur angezeigt mit Dateinamen :)

    Danke nochmals @TheShadowAE

  • Ja genau. Wenn nur ein Ordner angegeben wird, heißt das für webserver automatisch die Hauptseite. Und das ist die index.htm(l)