Zeichen einsetzen in eine Webpage
-
http://www.boost.org/doc/libs/1_36_0/doc/html/boost_asio.html
Hier findest du alles, was du braucht. Anonsten hilft da auch google weiter;)
-
danke für die Hinweise! Habe mir da so eine schweizer Seite rausgesucht. Da wird sehr gut erklärt wie man einen Server und einen Client bastelt und diese dann Daten austauschen lässt. Allerdings in C. Finde es nur komisch, dass man beim Senden send() und empfangen recv() die Datengröße angeben muss. So ist man kaum flexibel bei einem Chatprogramm zB. Aber egal, die Grundlagen werden solide vermittelt wie ich finde und für Leute die kaum Netzwerkerfahrung haben sehr gut. Werde die Seite später mal posten, ist für andere vielleicht auch ganz interessant...
Frage mich nur, wie ich daten in ein Box reinschreibe und dann auf senden "klicke" in der Webpage über das C++ Programm, nachdem ich mich mit einer bestimmten IP über einen Port verbunden habe (TCP). Man müsste halt an den Server schicken: Schreibe mir den Text "blabla" in diese Box und drücke dann den Button mit der Aufschrift "senden", falls es einen gibt. Wenn nicht gib Fehler aus. So stelle ich mir das etwa vor. Nur wie das Programm die entsprechende MSG Box findet und wie der Befehl für "button drücken" geht bleibt mir schleierhaft und habe auch noch nichts gefunden dazu...
-
du verstehst da was falsch... klar kannst du ueber ein C++-Programm den Text in das Textfeld schreiben und dann auf "Senden" klicken, aber das ist unnoetig kompliziert.
Am einfachsten siehst du einfach nach, welche Daten dein Browser an den Webserver schickt, wenn dieser das Formular absendet. Und genau diese Kommunikation kannst du auch mit einem C++-Programm durchfuehren.
-
tja, klingt natürlich logisch und das war auch mein erster Gedankengang, aber kein Plan wie ich herausfinde was genau der alles schickt (also mein Browser) wenn ich auf senden geklickt habe. Gibts da tools um den Datenfluss praktisch abzufangen?
-
Ja.
-
nennt sich netzwerksniffer. wireshark ist ganz praktisch
-
helferlein schrieb:
nennt sich netzwerksniffer. wireshark ist ganz praktisch
nur wenn man aus den unzaehligen Daten, die dort erscheinen, schlau wird
-
und bei dem Tool kann ich einschalten, dass ich nur die Daten sehen will, die mir Firefox zB an den Server sendet?
-
so hab das Programm jetzt mal ausprobiert und habe als Filter mal eine IP eingegeben wo man Benutzername und Passwort eingeben muss und gescannt. Und siehe da. In einer Zeile wo unter INFO u.a. j_security_check HTTP/1.1 steht, da finde ich meinen eingetragenen Username und mein PW wieder. Schon etwas erschreckend
Unten im Kontrollfenster erscheint dann der String unter "Line-based text data: blblabla": j_username=xxxx&j_password=xxxxxxx.Heißt das ich muss diesen String einfach nur an die IP Adresse senden und dann loggt mich mein Programm ein?
Oder steckt mehr dahinter?
-
ist noch aktuell.
Benötige ich dafür eine weitere API?
-
nein. Du könntest dir durchlesen wie http funktioniert und den entsprechenden vollständigen request an die Seite schicken lassen. Also genau das schicken was dein Browser sonst schicken würde wenn du das händisch machst.
-
rofl
wieso sollte man das in C++ machen wollen? für sowas gibts doch PHP und konsorten.
wenns dann doch in C++ sein MUSS wäre vielleicht ne etwas "höhere angesiedelte" API als sockets nützlich. sowas wie WinHttp oder neon.
-
So. Hab es jetzt mit der libcurl versucht, was auch ganz gut funktioniert.
Allerdings weiß ich bis jetzt nicht wie ich ein falsches passwort oder username abfangen soll. Werde aus der Doku von libcurl nicht wirklich schlau....
Ich möchte, falls das PW oder Username falsch sind eine Meldung ausgeben. Dazu wollte ich prüfen ob ich von der Seite etwas zurückbekomme, zb den String "falsch". keine Ahnung wie Daten zu empfangen sind. Den rest hat man ja ganz gut auf der Doku rausfinden können. Aber ich werd echt nicht schlau draus.
Mein bisheriger Code:#include <iostream.h> #include <curl/curl.h> CURL *easyhandle; //global. Speicher wird gleich vor Programmstart festgelegt und nicht zur Runtime. size_t getData=0; size_t find=0; int main(void) { //handle initialisieren easyhandle=curl_easy_init(); if(!easyhandle) { cout<<"curl handle not started! ERROR!\n"; } else cout<<"curl handle started!\n"; //definieren curl_easy_setopt(easyhandle, CURLOPT_POSTFIELDS, "j_username=xxx&j_password=xxxx"); curl_easy_setopt(easyhandle, CURLOPT_URL, "http://bla.de/j_security_check"); find=curl_easy_setopt(easyhandle, CURLOPT_READFUNCTION, CURLOPT_READDATA); //abschicken if(curl_easy_perform(easyhandle)!=0) { cout<<"no connection!\n"; } else { if(find!=0) { cout<<"wrong Username or PW!\n"; } else cout<<"Username and PW right\n"; cout<<"connection established!\n"; } return 1; }