HTML-Server mit WINS



  • blamier...

    na gut.

    😃
    :xmas1:



  • Wie kann man denn jetzt den HTML-Code an den Client posten?
    Und soll das Protokoll auf UDP basieren?
    Es müssen ja logischerweise mehrere Anfragen verarbeitet werden können!
    Und noch was:
    Wie realisiert man den Zugriff auf eine Access-Datenbank?
    Über ODBC? Oder gleich über JET?

    Wäre echt nett, wenn ihr mir da helfen könntet! :xmas1: :xmas2: 🙂 😃 🙄 😮 :p :p



  • mit send. und nein, nicht udp.



  • ...



  • Blueice schrieb:

    Wie kann man denn jetzt den HTML-Code an den Client posten?

    send

    Blueice schrieb:

    Und soll das Protokoll auf UDP basieren?

    Hast Du die RFC gelesen?

    Blueice schrieb:

    Es müssen ja logischerweise mehrere Anfragen verarbeitet werden können!

    Häüngt von Deinem Server ab.. aber die meisten machen es so

    Blueice schrieb:

    Wie realisiert man den Zugriff auf eine Access-Datenbank?

    ODBC / JET / ADO / ATL-Consumer-Templates

    Blueice schrieb:

    Über ODBC? Oder gleich über JET?

    Ist ganz Dir überlassen.



  • @Blueice und schon angefangen?

    hab mal nen kleines geschenk für dich 2 Funktionen die du bestimmt gebrauchen kannst

    hier mal der Link
    http://skippy.uttx.net/phpBB2/viewtopic.php?t=5

    die erste Funktion ist

    BOOL isDirectory(const char *filename)
    

    damit kannst du prüfen ob es eine Datei oder ein verzeichnis ist das dein Server senden/verarbeiten soll

    die zweite Funktion währe

    CString DynamicIndex(CString Homedir, CString path)
    

    die ist in meinem Server dafür zuständig das bei verzeichnissen in denen keine Index.html ist dynamisch(also zur laufzeit) ein index erstellt wird.

    übrigens hab ich bis jetzt keinen anderen momentan von einzel personen oder kleinen gruppen entwickelten /oder in entwicklung befinden Server solch eine Funktion gefunden

    wozu möchtest denn die datenbank anbindung?? das würd mich persönlich mal interessieren



  • Wollte ich schon immer mal probieren und hätte es sicher auch ab und an gebraucht.
    Was ich NICHT wollte wäre eine PHP-Nutzung (CGI...)
    weil dies durch Anwendung von C++ wesentlich leichter für mich ist.
    Mich fasziniert WINS und Netzwerk sehr, andernseits auch Databases.

    Ich wollte schon immer mal einen Server mit (z.B. einem Französisch-Trainer)
    erstellen, da ich Übung früher dringend gebraucht habe, allerdings keine gefunden und somit gerne anderen teilen möchte!
    👍

    Blueice.



  • und deine fragen zufriedenstellend beantwortet oder noch irgedwas wo ich weiterhelfen könnte



  • Noch eine kleine Frage:
    Ist Flooding auch bei diesem Server eine Gefahr?
    Welche Mechanismen könnten meinen Server schützen? 👍



  • Skippy,
    galvanisierst du als Hobby?
    😃



  • @Galvanisieren als Hobby und Beruf

    zum Thema Flooding:

    das ist ziemlich Problematisch sich davor zu Schützen ich würde vielleicht mal den Ansatz versuchen timer gesteuert immer zu Prüfen wieviel CPU Last dein Server erzeugt und dann sagen wir mal als Beispiel wenn der Server länger als 2 Minuten mehr als 80%CPU Last erzeugt sperrst de ihn halt und sendest nur noch ne fehlermeldung Server deaktiviert wegen Flooding

    wichtig ist aber auf jedenfall das du aus der URL folgendes rausfilterst ..

    achso Dateien senden/Verarbeiten nimm auf jedenfall winapi funktionen dort kannst du nämlich leicht realisieren das Dateien die das attribut "Versteckt" haben nicht verarbeitet werden können.

    Weiterhin wird gern in Tutorials zu diesem Thema oft gezeigt das beim Dateien senden einfach die Dateigröße ausgelesen wird dann ne Buffer in der größe angelegt wird und danach wird die Datei komplett in den Arbeitsspeicher gelesen. mach das Blos nicht denn versuch mal so ne 200MB große datei zu senden

    zum Thema dateien senden hier mal die funktion von meinem ersten versuch

    void Socket::SendFiles(const char *filename)
    {
     FILE *resource = NULL;
     char buf[1024];
     int sizeRead;
    
    printf ( "file_found Server will send: %s", filename );
    
     resource = fopen(filename, "rb");
     if (resource == NULL)
     {
      printf ( "not_found: %s", filename );
     }
     else
     {
    
    while(!feof(resource))
         { 
              sizeRead=fread( buf,1, sizeof(buf), resource);
             send(s_, buf, sizeRead, 0);
          }
     }
     fclose(resource);
    }
    

    dort wird die Datei in kleine Häppchen verschickt



  • Wie kann man denn jeden einzelnen "Client" eine Session-ID zuweisen und diesen
    dann über einen Pointer individuell behandeln? 😮 ⚠ :xmas1:
    Damit kann man doch einzelne Anfragen sperren, wenn diese illegale Aktionen wie Flooding, DoS, etc. durchführen.
    Oder soll man gleich die Firewall dafür nutzen, um timeouts zu erzeugen?



  • ich glaube irgendwo in den ganzen Blödsinn hat man in ner struktur irgendwo die Ip adresse von demjenigen dir deinen Server die anfrage stellt damit müsstest du ne zuordnung erstellen können

    problem ist aber z.b. das man bei Attacken oft vieler Rechner gleichzeitig nutz um eben diese möglichkeit des Blockens zu fast unmöglich zu machen. Du soltest aber auch darrauf achten die maximale Anzahl an Gleichzeitigen verbindungen zu begrenzen.

    😉 Nachste Frage



  • Könntest Du mir noch Tipps zurzüglich der Performance geben?
    Welche Modifikationen können die Leistung einsckränken, welche augmentieren?

    Es ist übrigens sehr, sehr nett von Dir, dass Du Dich so umfangreich
    mit den Problemen eines Neulings wie mir beschäftigst!

    Blueice 😉 😃



  • ich würd mal vorschlagen das wir uns erst mal kümmern das dein Server ordentlich läuft und danach können wir uns den Optimierungen Zuwenden obwohl man sagen muss das es aus sicht dieser kleinen Server nichts so weltbewegendes zu optimieren gibt.

    könntest aber mal schreiben wie weit de bist und wie dir die realisierung so vorschwebt?



  • Nun,
    Das WINS-Gerüst ist schon mal fertig!
    Auch die Prinzipien sind mir klar.
    Als Nächstes werden halt die Get, Recv... - Anfragen,
    wie sie in der RFC behandelt werden, drangenommen!

    Ich bin optimistisch.

    Blueice, 😃



  • ich glaube Blueice will nur labern. 😃



  • ??????



  • muell schrieb:

    ich glaube Blueice will nur labern. 😃

    Warum sollte ich nur labern wollen?
    Mal ehrlich, Mühe habe ich mir schon gemacht.
    Es ist nicht so einfach, in C++ zu schreiben!
    Besonders dann, wenn man noch nicht so gut darin ist.
    Ich möchte ja auch alles vornherein absprechen und sicher gehen,
    dass ich meinen Entwurf nicht gleich wieder verwerfen muss!

    Ich will keinen volllabern, wenn ich hier unerwünscht oder überflüssig
    bin, sagt es mir bitte. Es liegt außer meiner Natur Menschen weiter
    zu belasten



  • was mich eher interessiert ist wie du es realisiert hast in bezug auf sockets und Threats gemacht ? so mal ne kurze beschreibung des internen aufbaus soweit du halt schon bist

    ich hab bei mir z.b. folgenden aufbau

    3Threats

    den accept, den helper und den client threat

    der accept threat behandelt nur anfragen auf port 80 wird dort nen client gefunden erzeugt er für jeden clienten einen client threat und startet notfalls den helper falls dieser nicht schon läuft

    der helper threat überwacht die client threats wenn diese eben nach einer gewissen zeit nicht antworten werden sie beendet.und übernimmt auch nach eenden der threats ein paar aufräum arbeiten.

    die client threats bearbeiten eben die client anfragen wie dateisenden usw.


Anmelden zum Antworten