Port 80 abhören

  • VB6

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Jue.

    Port 80 abhören

    Hy Leute Kann man mit Winsock oder mit was anderem den Port 80 abhören
    Sodass wenn einer deine IP im Browser eingibt eine Seite kommt
    (JA Richtig! ICh will einen Webserver schreiben weil der von Microsoft und der von Apache beide SCHEISSE sind!)
    Wieder ein Beispiel von vb-archiv:
    vbarchiv.net/workshop/workshop21s2.html

    So gesehen musst du jede Seite, Bild, ... downloaden. Nur der Unterschied zwischen einem "richtigen" Download und den Download einer HTML-Seite ist, das der "richtige" Download einfach nur gespeichert wird. Die HTML-Datei wird vom Browser interpretiert ...

    Zu dem Beispielprogramm:
    Ein Download besteht aus einem REQUEST und einem REPONSE. Ein REQUEST bestht aus einer "Methode"-Zeile (Die 1. Zeile). z.B.: <GET / HTTP/1.1> (bedeuted, dass der Client die "1. Seite" vom Sevrer anfordert). Danach kommen noch son paar Angaben wie: <Accept: text/html, */*>(bedeutet, das der Client HTML-Dateien bevorzugt, aber auch andere Dateien annimmt; MIME, falls dir das was sagt). Ein REPONSE besteht aus einem "Fehler" (Erfolg ist "Fehler"-Nr. 200):<HTTP/1.1 200 OK>(bedeuted, das alles OK ist). Danach kommen wieder ein paar andere Angaben: z.B: <Server: Apache>(Bedeuted, das der Sever ein Apache-Sever ist). Hinter dem REPONSE-Header kommen die Daten. Dieses kann auch in mehreren Paketen geschehen.

    Zwischen den Zeilen gehört ein vbCrLf !!

    Das war nicht alles, aber der Grundsatz, wenn ich mal mehr Zeit hab' kann ich ausführlicher werden...

    Jue ;)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Jue, du beschreibst ihm den Weg, den man als Client
    gehen würde um eine Verbindung zu einem Server
    aufzubauen. Er möchte aber genau das gegenteil:
    nämlich Server sein.

    Du musst einfach Protokoll vom Winsock Steuerelement
    auf TCP/IP stellen, sowie die Eigenschaft LocalPort
    auf 80 setzten. Dann rufst du beim Programmstart
    Listen() auf. Wenn man jetzt deine IP z.B. im IE
    angibt, wird das ConnectionRequest() Ereignis
    des Steuerelements aufgerufen. Wenn du nun eine
    Verbindung zum Client aufbauen willst, musst
    du zunächst aufhören Port 80 zu überwachen, dazu
    rufst du Close() auf, jetzt verwendest du die Accept()
    Funktion, um dem Client die Verbindung zu
    gestatten, der Funktion übergibst du die requestId,
    die beim Auslösen der Funktion mitgegeben
    wurde. Da du ja einen WebServer bauen willst, musst
    du jetzt eigentlich irgendwelche HTTP Header
    senden, aber da kann ich dir nicht helfen.
    Ich bin Jue,aber bei meinem Frend:

    Ich seinen Post zu schnell gelesen aber, wens so ist, ich kann natürlich auch einen Server-Header beschreiben ... (wenn ich wieder zu Haus bin)

    jue

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Kröger“ ()

    Jetzt bin ich es wieder.
    Ich habe selber einen Web-Server geschreiben(Beta version)
    Hier hast du eine Liste von allen vorerst wichtigen HTTP-Headern, damit du Web-Sites aufrufen und Downloads starten kannst:
    Der Client sendet:
    GET /pfad HTTP/Version(meist 1.1)
    Accept: Eine Reihe von Dateitypen, die er verträgt
    Accept-Language: ???
    Accept-Encoding: zip o. ä.
    If-Modified-Since: von wann seine Datei ist( der Server sendet sein Datei-Alter im Header Last-Modified), wenn seine Datei nicht veraltet ist, sendet der Server den Fehler HTTP/Version 304 Not Modified. Dann weiß der Browser, dass die Datei nicht veraltet ist.
    Range: Angaben dazu, ob eine Datei teilweise heruntergeladen werden soll

    Felix K
    du hast fast ein jahr gebraucht um das zu verstehen?! naja schwerz beiseite ...

    du musst es schematisch so machen:

    auf port 80 hören
    client akzeptieren
    auf daten vom client warten; sie geben an:
    -was für einen Datei der Client will (GET / HTTP/1.1)
    -welche HTTP Version er hat (s.o.)
    -welchen Browser er verwendet (User-Agent: lalaltrallala)
    -...
    [Diese Daten werden über den Header des Clients übermittelt]
    daten auswerten (z.B. ist die angeforderte Datei vorhanden? ; gefällt dir sein Browser ?, seine Sprache? ;) ...)
    http-header generieren, evtl. body, also die eigentlichen daten drunter setzen
    http-header zum client schicken
    fertig


    Ich rate dir dich mal per telnet in einen HTTP-Server einzuloggen:
    telnet www.google.de) und das die Verbindung nach der Übertragung der Daten beendet werden soll (Connection: Close).

    Du wirst mir jetzt sagen, dass du keinen Client programmieren willst, aber die Methode über telnet ist durchaus sinnvoll, da man dann weiß, wie man einen Server imitiren bzw. selber machen kann.

    Für dir Bio-Cracks: Das ganze nennt man "Lernen am Beipiel"


    Viel Erfolg,
    Jue ;)
    bernd24 schrieb am 15.12.2004 21:53
    Winsock1.Accept requestID
    Winsock1.Close
    recievedData = Winsock1.GetData


    Also, was bringt dir das, wenn du einen Computer gewähren lässt (mit accept) und dann wieder trennst (close) ???. Außerdem musst du GetData erst aufrufen, wenn wirklich Daten im Netzwerkbuffer sind, spricht das WinSock-Event "DataArrival" ausgelöst wurde ...

    Schau dir einfach mal meinen (Universal)TCP-Client an (unter Sourcecodeaustausch). Dort sind alle Grundsätze für WinSock drin und wie ich finde im Sourcecode ausreichend dokumentiert ...

    Viel Erfolg,
    Jue ;)