Per TCP Screenshot anzeigen

  • Hallo erstmal :)

    ich möchte gerne eine art http server machen. ich möchte das der server auf der localen ip "lauscht". auf port 8080. wenn ich nun im browser beispielsweise eingebe: 192.168.178.20:8080 das ich dann eine html oder php seite anzeigen lasse wo man zb ein pw eingeben muss und wenn das pw richtig ist soll eine html seite angezeigt werden wo ein screenshot vom aktuellen bildschirm zu sehen ist.

    ist das irgendwie möglich? habe wirklich keine ahnung wie :/. habe bisher nur geschafft das wenn ich im browser auf die adresse gehe das ne msgbox angezeigt wird....

    das wars aber auch.

    hoffe das mir wer helfen kann. mfg :)

  • da ich ja grad sowas ähnlichs mache würd ich der empfehl da nicht von der programmseite ranzugehen.
    fang erstmal an das HTTP Protokoll zu verstehen und sich das zeug mal im raw modus anzuschauen

  • ich brauche das nur für meinen alten pc weil ich den als fileserver nutze und ab und an mal draufgucken möchte und nicht immer teamviewer anschmeißen will etc.

    hat nicht wer nen bsp code oder so?

    authentifizierung ist auch egal

    nur das mit dem bild ist wichtig :D

  • mach dir doch ein script, das dir alle x minuten x stunden oder tage einen screenshot an ne mail addy schickt...

    alternative.

    programmier dir nen server + Client der die screenshot in x time macht und sie dann auf deinen pc schickt...

  • Das hier funktioniert bei mir schonmal aufm localhost.
    Ist quick and dirty :)

    Spoiler anzeigen
    [autoit]

    #include<screencapture.au3>

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

    TCPStartup()
    $iSocket = TCPListen("127.0.0.1", 1337)
    While 1
    Do
    $iClientSocket = TCPAccept($iSocket)
    Until $iClientSocket > 0
    ConsoleWrite("Habe einen Client auf Socket: " & $iClientSocket & @CRLF & @CRLF)
    _ScreenCapture_Capture("Screen.jpg")
    $sData=FileRead("Screen.jpg")
    $sHeader = "HTTP/1.1 200 OK" & @CRLF & _
    "Content-Type: image/jpg" & @CRLF & _
    "Content-Length: " & StringLen($sData) & @CRLF & _
    "Connection: close" & @CRLF & @CRLF & $sData
    ConsoleWrite("Habe einen Screenshot erstellt.")
    $hTimer = TimerInit()
    Do
    $sRecv = TCPRecv($iClientSocket, 1024)
    Until $sRecv <> "" Or TimerDiff($hTimer) > 500
    If TimerDiff($hTimer) < 500 Then
    Do
    $sRecv &= TCPRecv($iClientSocket, 1024)
    Until StringInStr($sRecv, @CRLF & @CRLF)
    ConsoleWrite("Habe Daten vom Browser empfangen: " & $sRecv & @CRLF & @CRLF)
    EndIf
    TCPSend($iClientSocket, $sHeader)
    ConsoleWrite("Habe Daten versendet." & @CRLF & @CRLF)
    TCPCloseSocket($iClientSocket)
    WEnd
    TCPShutdown()

    [/autoit]

    Das als Server starten und dann per Browser auf die IP verbinden.
    Das könnte man noch so umstellen das es im LAN läuft aber auch via Internet :)

    Mfg
    monkey

    Monkey - die finale Potenz von göttlich!
    Sloganizer

  • top! :D

    dankeschön schonmal dafür ;)

    nun wollte ich allerdings eine html seite anzeigen und habe das so gemacht:

    Spoiler anzeigen
    [autoit]

    #include<screencapture.au3>

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

    _ScreenCapture_SetJPGQuality(100)

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

    TCPStartup()
    $iSocket = TCPListen("127.0.0.1", 1337)
    While 1
    Do
    $iClientSocket = TCPAccept($iSocket)
    Until $iClientSocket > 0
    ConsoleWrite("Habe einen Client auf Socket: " & $iClientSocket & @CRLF & @CRLF)
    _ScreenCapture_Capture("logo.jpg")
    $sData= FileRead("index.html")
    $sHeader = "HTTP/1.1 200 OK" & @CRLF & _
    "Content-Type: text/html" & @CRLF & _
    "Content-Length: " & stringLen($sData) & @CRLF & _
    "Connection: close" & @CRLF & @CRLF & $sData
    ConsoleWrite("Habe einen Screenshot erstellt.")
    $hTimer = TimerInit()
    Do
    $sRecv = TCPRecv($iClientSocket, 1024)
    Until $sRecv <> "" Or TimerDiff($hTimer) > 500
    If TimerDiff($hTimer) < 500 Then
    Do
    $sRecv &= TCPRecv($iClientSocket, 1024)
    Until StringInStr($sRecv, @CRLF & @CRLF)
    ConsoleWrite("Habe Daten vom Browser empfangen: " & $sRecv & @CRLF & @CRLF)
    EndIf
    TCPSend($iClientSocket, $sHeader)
    ConsoleWrite("Habe Daten versendet." & @CRLF & @CRLF)
    TCPCloseSocket($iClientSocket)
    WEnd
    TCPShutdown()

    [/autoit]

    index.html:

    HTML
    <html>
    	<head>
    		<title>deskshow</title>
    	</head>
    	<body>
    			<img src="logo.jpg" " width="800" height="600" />
    	</body>
    </html>

    also ganz billig gemacht :D. allerdings wird da nix angezeigt :/

    hilfe?xD habe schon ganze zeit probiert etc. :( mfg killax2x

    Einmal editiert, zuletzt von killax2x (11. Mai 2011 um 23:51)

  • Indemfall hast du das http Protokoll noch nicht richtig verstanden.

    Der Browser schickt an deinen Server ein GET, welches ungefähr so aufgebaut sein wird

    Code
    GET /index.html HTTP/1.1
    Host: localhost
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
    Accept: text/html/*;q=0.8,*/*;q=0.5
    Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
    Accept-Encoding: gzip, deflate
    Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
    Keep-Alive: 115
    Connection: keep-alive

    Dein Browser werten dann den Quellcode der Index.html aus.

    Da in deinem Quellcode dashier steht:

    Code
    <img src="logo.jpg" " width="800" height="600" />


    Sendet der Browser nun an deinen Server etwas in der Art :

    Code
    GET /logo.jpg HTTP/1.1
    Host: localhost
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
    Accept: image/jpq,image/*;q=0.8,*/*;q=0.5
    Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
    Accept-Encoding: gzip, deflate
    Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
    Keep-Alive: 115
    Connection: keep-alive

    Jetzt sollte dein Server anhand :

    Code
    Accept:image/jpq,image/*;q=0.8,*/*;q=0.5


    erkennen, dass der Browser ein Bild angefordert hat.
    Danach sollte der Server in dem über :

    Code
    GET /logo.jpg HTTP/1.1


    angegebenen Verzeichniss nach dem Bild suchen, und wenn vorhanden an den Browser schicken

    So wie du es bis jetzt hast ist klar, dass das Bild nicht angezeigt wird, da das Bild nicht an den Browser übertragen wird.

    Hoffe es hat etwas geholfen.

    EDIT: Ich empfehle dir mal Live HTTP Header für den FF zu installieren, dann wird dir das Prinzip vllt etwas klarer.

    mfg Darter

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.

    Einmal editiert, zuletzt von Darter (12. Mai 2011 um 10:05)