Website Quelltext auslesen [Hilfe]
-
Hallo
Ich komme bei einem Problem nicht weiter. Mein Ziel ist es ohne cURL eine Website auszulesen.
#include <stdio.h> #include <stdlib.h> int main() { SOCKET s; SOCKADDR_IN addr; struct hostent *hp; unsigned long int ip; char send_buf[256]; ip = inet_addr("http://c-plusplus.net"); hp = gethostbyname("http://cplusplus.de"); s=socket(AF_INET,SOCK_STREAM,0); sprintf(send_buf,"GET /%s HTTP/1.0",ip); send(s,send_buf,strlen(send_buf),0); return 0; }
So, nun aber kommt dieser Fehler:
Screenshot: http://img3.imagebanana.com/img/cgn05gvc/screen.PNG
Der Fehler liegt bei Zeile: 16
Ich benutze den C++ Builder von Embarcadero
Vielen Dank
-
sprintf
erwartet bei%s
einen String und keinunsigned long int
.
-
Hallo,
schau dir mal die Formatierungsoptionen für sprintf an (http://msdn.microsoft.com/en-us/library/ybk95axf%28VS.71%29.aspx). Danach sollte klar sei, dass bei %s das Argument als char* verwendet wird, es werden also alle Zeichen bis zum Null-Zeichen ausgegeben. net_addr(..) liefert jedoch einen unsigned long.
Du deklarierst also eine neue Varibaleconst char* pAddr = "http://c-plusplus.net"
und fügst diese dann entsprechend ein.
-
Wir sind ja hier im C++-Formum
Nutze doch einfach std::string aus der Standardbibiothek und solche blöden Fehler gehören der Vergangenheit an.
-
Vielen Dank Leute es funktionier SOWEIT. Meine Frage jetzt: Wie kann ich den Quelltext ausgeben? Da kommt nichts
Vielen Dank nochmal!
-
Du hast doch bestimmt mal ein "Hallo Welt"-Programm geschrieben. Übertrage die dort benutzten Methoden auf dein jetziges Problem.
-
Hallo
Ja doch das habe ich schon
Aber funktioniert so nicht:
cout << send(s,send_buf,strlen(send_buf),0) << endl;
Dann kommt -1 raus
-
Es könnte helfen, erstmal zum Server zu verbinden.
-
Hm das weiss ich nicht wie das funktionieren könnte. Über Google hab ich nicht wirklich was sinnvolles gefunden.
-
http://c-worker.ch/tuts/wstut_op.php
Im übrigen musst du dir das HTTP Protokoll nochmals ansehen. Deine Anfrage ist so nicht richtig.
-
Schau dir mal folgende Klasse an (die Bibiothek kann man umsonst herunterladen, die Klasse CWinSocket einzeln nutzen).
http://www.wheresjames.com/rulib/class_c_win_socket.html
-
Sehr gute Links! Ich danke euch. Ich werde es probieren.
Mit freundlichen Grüsse,
Karl
-
Ich habe den von mir geposteteten Link gerade einmal angeschaut, ich habs nicht überprüft, aber ich glaube bei dem Beisp. unten fehlt ein
CWinSocket::InitSockets();
und am Ende
CWinSocket::UninitSockets();
Ich kann mich aber auch täuschen...
-
unreg schrieb:
Ich habe den von mir geposteteten Link gerade einmal angeschaut, ich habs nicht überprüft, aber ich glaube bei dem Beisp. unten fehlt ein
CWinSocket::InitSockets();
und am Ende
CWinSocket::UninitSockets();
Ich kann mich aber auch täuschen...
libcurl sei auch genannt, da gibts auch eine C++ Variante davon.
rya.