Philipp Hasenfratz: Eigener Webserver in Delphi

Beitrag lesen

Halihallo Andreas

Wir hatten ja irgendwann mal über die Belsatung eines Servers von wegen Logging von HTTP-Headern diskutiert. Es müßte doch ganz eifnach möglich sein ein kleines Programmin C(++) zu schreiben, welches auf einem andern Port als 80 lauscht und alle empfangenen Daten direkt in eine Flatfile schreibt und ein transparentes 1x1 gif an den Client sendet, oder?

Ja, das ist meiner Meinung nach wirklich einfach, nur, was hat das mit Kay zu tun?
Ich glaube, du hast mich falsch verstanden? - Ich spreche nicht von der Schwierigkeit
der Reponse, sondern von der Schwierigkeit, wie die Daten über CGI an das Script/Programm
weitergegeben werden.
Kay will ja den Output des PHP-Scriptes, um es dann an den Client weiterzuleiten.

Ich meine, letzterer HTTP-"Code" ist ja wirklich nicht schwer und sollte möglichst kurz und kann immer gleich sein.

Ich sage ja nur, dass er _nötig_ ist, wie gross er ist, spielt wirklich keine zentrale
Rolle, nur, er muss der Spezifikation genügen. Zudem wird's schon schwieriger werden,
wenn man nach HTTP/1.1 auch stay-alive Verbindungen zulässt, mit all den Konsequenzen,
Programm persistent im Speicher halten, Content-Length muss gegeben sein, ...
Und dann sollte ja auch das Caching implementiert werden (eg. Not Modified); das macht
die Response ja erst sinnvoll und erst da kriegt man die Anforderungen an einen Webserver
erst zu spüren; das lässt sich kaum in einem Tag selbstprogrammieren...

Aber ich habe mich im Gegensatz zu Dir bisher kaum mit C++ auseinandergesetzt, ich kann zwar Dateien schreiben(nicht wirklich schwer ;-)), aber wie schwer ist es mit C++ an einem Port des Server zu lauschen und HTTP-Daten einzulesen?

http://www.gnu.org/manual/glibc-2.0.6/html_chapter/libc_11.html#SEC180 ;-)
"lauschen und HTTP-Daten einzulesen" ? - Er möchte einen eingenen Webserver erstellen.

Würdet Ihr auf C oder C++ setzen? Oder wäre ein gut gechriebenes PERL-Programm performanter als ein kompletter Apache?

Mit Perl bestimmt nicht, besonders, wenn der ganze Funktionsumfang des Apachen
implementiert werden würde. Für einen kleinen Statistik-Tag, der nur ein Bildchen ausgibt
und die Requests interpretiert, _kann_ (muss nicht) ein eigenes C-Programm schon die
Performance erhöhen, wobei man dann auch sehr gut Programmieren muss (preforking,
request-queue-management; also alle Requests auf z. B. 10 prefork-Prozesse verteilen,
die bereits am laufen sind o. ä.). Der Apache verwendet auch dieses Vorgehen, bei mir
habe ich es auf 50 preforked processes eingestellt, d. h. beim Starten werden 50
gleiche "Server-Prozesse" gestartet, auf die die Requests gleichmässig verteilt werden.
Ein lineares (sequentielles) Abarbeiten der Request-Queue, wie Kay das im Moment macht,
wie ich mal vermute, ist in einer Multitasking-Umgebung wenig performant.

PS: Sorry, DU Deinem CygWin Problem untern kann ich nichts sagen, habe noch nicht viel gemacht und hatte noch kein Problem, außerdem verwende ich meist C++ unter Linux mit g++

Aber kein Problem. Mit Zeit kommt Rat, irgendwann werde ich also die Lösung finden ;)

Viele Grüsse

Philipp

0 40

Eigener Webserver in Delphi

Kay
  • sonstiges
  1. 0
    Philipp Hasenfratz
  2. 0
    Philipp Hasenfratz
    1. 0
      Kay
    2. 0
      Andreas Korthaus
      1. 0
        Philipp Hasenfratz
        1. 0

          OT: performanter Server für HTTP-Logging

          Andreas Korthaus
          • webserver
          1. 0
            Philipp Hasenfratz
            1. 0
              Andreas Korthaus
              1. 0
                Philipp Hasenfratz
              2. 0
                Michael Schröpl
            2. 0
              Sven Rautenberg
              1. 0
                Philipp Hasenfratz
                1. 0
                  Andreas Korthaus
                  1. 0
                    Philipp Hasenfratz
                    1. 0
                      Andreas Korthaus
                      1. 0
                        Andreas Korthaus
                        1. 0
                          Philipp Hasenfratz
                          1. 0
                            Andreas Korthaus
                            1. 0
                              Philipp Hasenfratz
                              1. 0
                                Andreas Korthaus
                                1. 0
                                  Philipp Hasenfratz
                              2. 0
                                Michael Schröpl
                                1. 0
                                  Andreas Korthaus
                            2. 0
                              Michael Schröpl
                        2. 0
                          Michael Schröpl
                          1. 0
                            Andreas Korthaus
                      2. 0
                        Philipp Hasenfratz
                        1. 0
                          Andreas Korthaus
                          1. 0
                            Philipp Hasenfratz
                            1. 0
                              Andreas Korthaus
                              1. 0
                                Philipp Hasenfratz
                                1. 0
                                  Andreas Korthaus
                                  1. 0
                                    Philipp Hasenfratz
                          2. 0
                            Michael Schröpl
                            1. 0
                              Andreas Korthaus
                              1. 0
                                Michael Schröpl
                  2. 0
                    Michael Schröpl
                    1. 0
                      Andreas Korthaus
                      1. 0
                        Michael Schröpl