Anzeige:
Seite 4 von 4 ErsteErste ... 234
Ergebnis 46 bis 60 von 60

Thema: (HTTP) Server mit Qt4

  1. #46
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Eventuell lässt sich auch QUrl zum parsen der GET URL heranziehen, das hätte u.A. hasQuery()

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  2. #47
    Registrierter Benutzer Avatar von TheDodger
    Registriert seit
    18.05.2001
    Ort
    Hamburg
    Beiträge
    615
    Zitat Zitat von zenobic Beitrag anzeigen
    Ich denke das kann auch richtig Spass machen
    Naja .. Spaß machen ...

    Scheinbar habe ich Probleme beim 'Auseinandernehmen' der Request-Daten:
    Code:
    [22:49:26:261] [     Debug] : HEADER: [595]
    'POST /post.html HTTP/1.1
    Host: localhost:8080
    User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.13) Gecko/20110102 Gentoo Firefox/3.6.13
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: en-us,en;q=0.7,de-de;q=0.3
    Accept-Encoding: gzip,deflate
    Accept-Charset: ISO-8859-15,utf-8;q=0.7,*;q=0.7
    Keep-Alive: 115
    Connection: keep-alive
    Referer: http://localhost:8080/
    X-Behavioral-Ad-Opt-Out: 1
    X-Do-Not-Track: 1
    Content-Type: multipart/form-data; boundary=---------------------------1525561818437990015185174710
    Content-Length: 278153'
    
    [22:49:26:261] [     Debug] : Request: 'POST' - 'post.html' - 'HTTP/1.1'
    [22:49:26:261] [     Debug] : Content-Disposition found ...
    [22:49:26:261] [     Debug] : Request-Size  '56749'
    [22:49:26:261] [ClassDebug] : void MultiPart::init()
    [22:49:26:262] [     Debug] :  capacity 57344
    [22:49:26:262] [     Debug] :  i think, we can have 1 attachments
    [22:49:26:262] [     Debug] :   name     'file1'
    [22:49:26:262] [     Debug] :   filename '01ba2c47cf8ceb8a8d23e565dcec297b-d31oky4.jpg'
    [22:49:26:262] [     Debug] :   type     'image/jpeg'
    [22:49:26:262] [     Debug] :   size     '56270'
    [22:49:26:262] [     Debug] :   datetime '10.01.2011-22:49:26:262'
    [22:49:26:262] [     Debug] :   md5      '684f129518e241c154fdaa5d5b8bba3d'
    Nach 'Content-Length' müssten es ~280k sein.
    Nach meinem auseinander-cut-en habe ich nur 56k übrig.

    Ich krieg 'n Fön

    update #1
    Ich glaube fast, der socket in Request.cpp bekommt die Daten nicht fix genug und wird geschlossen, bevor alles bei ihm gelandet ist.
    Gibt es keine Möglichkeit das anders zu gestalten?

    update #2
    aktuelle Version
    Bodo
    Systemadmistration UNIX

  3. #48
    Registrierter Benutzer Avatar von TheDodger
    Registriert seit
    18.05.2001
    Ort
    Hamburg
    Beiträge
    615
    Ich hab da eine Theorie, wieso das mit dem POST nicht so klappt ...
    Liegt das evtl. daran, dass der Request in einem Thread abgearbeitet wird und der irgendwie Probleme mit dem syncronisieren der IP / Ports bekommt?

    Denn anders kann ich mir das jetzt nicht mehr erklären.
    Ich hab das jetzt auch erstmal weiter nach hinten verschoben um mit Cookie & Session weiterzumachen ...
    Bodo
    Systemadmistration UNIX

  4. #49
    Registrierter Benutzer Avatar von TheDodger
    Registriert seit
    18.05.2001
    Ort
    Hamburg
    Beiträge
    615
    Zitat Zitat von TheDodger Beitrag anzeigen
    Ich hab da eine Theorie, wieso das mit dem POST nicht so klappt ...
    Liegt das evtl. daran, dass der Request in einem Thread abgearbeitet wird und der irgendwie Probleme mit dem syncronisieren der IP / Ports bekommt?
    Ich habe mal unterschiedliche Wege ausprobiert, um an die Daten zu kommen:
    #1
    Code:
       bool done = true;
       
       do {
    
          usleep(500);
    
          pRawHeaderData.append( socket->readAll() );
          
          done = socket->atEnd();
          socket->flush();      
       } while( !done );
    #2
    Code:
       while( socket->waitForDisconnected( 100 ) ) {
          
          pRawHeaderData.append( socket->readLine() );
       }
    #3
    Code:
       while( socket->canReadLine() ) {
    
          pRawHeaderData.append( socket->readLine() );
       }
    Nur um zu sehen, ob sich da irgendwas ändert.

    Aber was soll ich sagen?
    Das Ergebniss bleibt immer das gleiche ...
    Bodo
    Systemadmistration UNIX

  5. #50
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Vielleicht eher so:

    Code:
    do {
      while ( socket->waitForReadyRead( 100 ) ){
        pRawHeaderData.append( socket->read( socket->bytesAvailable() ) );
      }
    } while (!socket->atEnd())
    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  6. #51
    Registrierter Benutzer Avatar von TheDodger
    Registriert seit
    18.05.2001
    Ort
    Hamburg
    Beiträge
    615
    Zitat Zitat von anda_skoa Beitrag anzeigen
    Vielleicht eher so:

    Code:
    do {
      while ( socket->waitForReadyRead( 100 ) ){
        pRawHeaderData.append( socket->read( socket->bytesAvailable() ) );
      }
    } while (!socket->atEnd())
    Test ich nachher mal genauer.
    Beim reinen c'n'p ist das eine Endlosschleife

    [edit]
    Nein, es aendert sich nicht.
    Ich hab auch gerade keine Moeglichkeit gefunden aus der do while schleife auszubrechen ...
    Geändert von TheDodger (19-01-2011 um 21:16 Uhr)
    Bodo
    Systemadmistration UNIX

  7. #52
    Registrierter Benutzer Avatar von TheDodger
    Registriert seit
    18.05.2001
    Ort
    Hamburg
    Beiträge
    615
    Zitat Zitat von TheDodger Beitrag anzeigen
    Test ich nachher mal genauer.
    Beim reinen c'n'p ist das eine Endlosschleife

    [edit]
    Nein, es aendert sich nicht.
    Ich hab auch gerade keine Moeglichkeit gefunden aus der do while schleife auszubrechen ...
    Ich nehme alles zurück, was ich vorher behauptet habe!
    Ich hab das ganze mal mit 'make clean' gesäubert und neu gebaut und siehe da ... jetzt gehts auch!
    Was freu ich mich

    Danke!
    Bodo
    Systemadmistration UNIX

  8. #53
    Registrierter Benutzer Avatar von TheDodger
    Registriert seit
    18.05.2001
    Ort
    Hamburg
    Beiträge
    615
    Moin Moin!

    Ich habe jetzt eine halbwegs lauffähige Version (download).

    Momentan speichere ich die Sessions in einer sqlite-DB, bin mir aber nicht sicher, ob das als eine Performancebremse auswirken könnte.

    PHP hat ja nicht wirklich was mit typsicheren Variablen am Hut, so dass man dort (in den Sessions) problemlos ganze Arrays reindrücken kann. Wenn ich diese Funktionalität noch implementieren will, wüsste ich noch gar nicht wie.
    Mal abgesehen davon halte ich sie nicht gerade für sinnvoll.

    So, schaut euch das Ding an wenn ihr wollt.
    Über Kritik und Anregungen bin ich echt dankbar, also übt keine Zurückhaltung!
    Bodo
    Systemadmistration UNIX

  9. #54
    Registrierter Benutzer Avatar von TheDodger
    Registriert seit
    18.05.2001
    Ort
    Hamburg
    Beiträge
    615
    Nachdem ich nun soweit bin, habe ich wohl noch ein einzigest Problem ... und zwar das Ding mit den Plugins.

    Mein Wunschverhalten wäre dieses:
    Beim Start des Servers werden die Verfügbaren Plugins geladen und können dann generell von überall her genutzt werden.

    Aktuell scheine ich da aber an eine meiner (momentanen) Grenzen gestossen zu sein.
    Wenn ich die Plugins in der Klasse RIPCoreApplication lese, kann ich diese in Request nicht benutzen, also muß ich die da wieder laden.

    Und ich möchte nicht wirklich, dass die Plugins bei jedem Request neu geladen werden müssen. Dann brauch ich auch gar keine ...

    Gibt es da für mich keine Elegantere Lösung?
    Anda Skoa? Vielleicht hast du eine Idee?
    Bodo
    Systemadmistration UNIX

  10. #55
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Ich bin mit nicht ganz sicher, ob ich das Problem richtig verstehe.

    In deiner Applikationsklasse lädst du die Plugins und hälst sie dann in einem Container?

    Und in deiner Requestklasse hast du keine Zugriff auf diesen Container?

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  11. #56
    Registrierter Benutzer Avatar von TheDodger
    Registriert seit
    18.05.2001
    Ort
    Hamburg
    Beiträge
    615
    Zitat Zitat von anda_skoa Beitrag anzeigen
    Ich bin mit nicht ganz sicher, ob ich das Problem richtig verstehe.

    In deiner Applikationsklasse lädst du die Plugins und hälst sie dann in einem Container?

    Und in deiner Requestklasse hast du keine Zugriff auf diesen Container?
    Richtig.
    Ich denke, es liegt daran, das der eigentliche Construktor des PluginLoaders privat und er eigentlich über eine statische PluginLoader::self() Funktion instanziert und erstellt wird.
    self() ruft dann intern die (private) scan() Funktion auf.

    Ich hab bislang noch keinen Hebel gefunden, dem Container eine Funktion mit zu geben, mit der die geladenen Plugins public zur Verfügung gestellt werden können.
    Bodo
    Systemadmistration UNIX

  12. #57
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    DAs versteh ich jetzt nicht ganz.

    Kannst du nicht einfach
    Code:
    PluginLoader::self()->createForName(...);
    aufrufen?

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  13. #58
    Registrierter Benutzer Avatar von TheDodger
    Registriert seit
    18.05.2001
    Ort
    Hamburg
    Beiträge
    615
    Zitat Zitat von anda_skoa Beitrag anzeigen
    DAs versteh ich jetzt nicht ganz.

    Kannst du nicht einfach
    Code:
    PluginLoader::self()->createForName(...);
    aufrufen?
    Stimmt, das funktioniert wunderbar!
    Wahhh, da hab ich mich so dermassen verrannt, dass ich die einfachste Lösung nicht mehr gesehen habe
    Bodo
    Systemadmistration UNIX

  14. #59
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Bin gerade über etwas gestolpert, dass dich vielleicht interessieren könnte:
    https://github.com/nikhilm/qhttpserver

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  15. #60
    Registrierter Benutzer Avatar von TheDodger
    Registriert seit
    18.05.2001
    Ort
    Hamburg
    Beiträge
    615
    Zitat Zitat von anda_skoa Beitrag anzeigen
    Bin gerade über etwas gestolpert, dass dich vielleicht interessieren könnte:
    https://github.com/nikhilm/qhttpserver
    Ahh, da schien jemand eine ähnlich Idee gehabt zu haben.
    Danke, dass werd ich mir bei Gelegenheit gern mal mit anschauen.

    Zur Zeit kämpfe ich eher mit dem ausliefern von Bildern ... das scheint nicht ganz so zu funktionieren, wie ich es mir vorstelle.
    Reine HTML & Stylesheet Daten funktionieren
    Geändert von TheDodger (01-03-2011 um 20:31 Uhr)
    Bodo
    Systemadmistration UNIX

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •