400 http bad request
-
weiß jemand ob dass unter windows 7 anders läuft?
-
Wie wäre es, wenn du das Projekt irgendwo hin lädst, wo man es jetzt immernoch runter laden kann. Wird sonst ein wenig schwierig, sich das anzugucken.
-
int client::client_send(CHAR* text) { send(s,text,strlen(text),0); return 0; }
Du überprüfst den Rückgabewert von send nicht!!! Wenn du mal in den Dokumentation schaust, wirst du feststellen, dass
send
nur so viele Zeichen sendet, wie es will. Es ist nicht gesagt, dass der komplette Puffer gesendet wird. Dies kann z.B. der Fall sein, wenn der sende Puffer im Betriebssystem voll ist. Falls nicht alles gesendet wurde, musst du ein zweites oder vielleicht auch noch ein drittessend
nach schieben.
-
also 1. die Homepage ist nicht immer on weil sie sonst unmegen an rechenkapazitäten auf meinem rechner verbrauchen würde
2.Habe die Rückgabewerte überprüft es sendet genau 62 Zeichen auf einmal und mit srtlen habe ich überprüft ob dass die länge des textes ist und es stimmte über ein
-
strlen("GET /faq/index.html HTTP/1.1\r\nHost: www.kernel.org\r\n\r\n") == 54
-
kann es sein, dass bei dir \n als nur ein Buchstabe gewertet wird ubnd bei mir als 2? und dass gleiche bei \r? Oder dass das generell in der Winapi so ist?
-
gibt der benutzer den request-string in ein eingabefeld ein? wenn ja müsstest du wirklich aus 2 zeichen ein zeichen machen. '\' '\n' => '\n'
falls es aber im quelltext steht wird es immer nur als 1 zeichen gezählt. auf jeder plattform.
-
also der Benutzer kann es eingeben aber ist dass nicht eigentlich egal weil bei -.- hats doch auch funktioniert
-
klg71 schrieb:
also der Benutzer kann es eingeben aber ist dass nicht eigentlich egal weil bei -.- hats doch auch funktioniert
Wie gibt er es denn ein? Wenn du eine Benutzereingabe hast, werden die Zeichen darin natürlich nicht escapet.
-
er gibt es in ein Editfeld ein muessen die Zeichen denn unbedingt escapet werden?
-
klg71 schrieb:
er gibt es in ein Editfeld ein muessen die Zeichen denn unbedingt escapet werden?
Ja natürlich! Sonst sendest du mit einem "\n" kein Neue-Zeile-Zeichen, sondern ein Backslash- gefolgt von einem "n"-Zeichen. Das mag der HTTP-Server natürlich garnicht.
-
und wie ändere ich dass ?
irgendwas mit substr() und replace?
-
klg71 schrieb:
und wie ändere ich dass ?
irgendwas mit substr() und replace?Ja. Zum Beispiel damit.
Btw.: Du könntest dir das Programm Wireshark mal anschauen. Da kannst du dir den Netzwerkverkehr ansehen und überprüfen, ob das Programm wirklich das sendet, was du vermutest.
-
also ich habs jetz hinbekommen mein quelltext dazu:
bool c=0; while(request.npos!=(a=(request.find('\\')))) { if(c) { request.replace(a,1,"\n"); c=0; } else { request.replace(a,1,"\r"); c=1; } request.erase(a+1,1); }
Das Programm funktioniert jetzt tadellos:D
Frohes Neues Jahr