recv() inkludiert unerwünschte 0x0D Chars
-
Mir ist schon klar, dass es chunked ist.
Ich habe ja auch bereits erwähnt, dass ich den Sourcecode längst unchunked habe und die Header sowie die Chunklengths entfernt habe.
Es geht mir auch nich um die 2 oder 3 Umbrüche nach den Chunks, sondern um die Umbrüche (insofern 0x0D wirklich ein Umbruch ist) mittem im Sourcecode, die nunmal bei Wireshark nicht da sind und auch im Übrigen dort gar nicht hingehören.
Wie gesagt, mit den Chunks habe ich keine Probleme .. diese sind bereits wieder zusammengefügt.
Zu mal es nur 2 Chunks sind, was das Debuggen sehr vereinfacht.
Trotzdem habe ich keinen Plan.
EDIT:
ios_base::binary
Damit gehts tatsächlich reibungslos.
Vielen Dank für die Hilfe !!!
Aber was bewirkt es, bzw. wieso macht das so einen Unterschied aus?
-
Hast du das HTTP-PDF nun gelesen?

Ehm, zu
ios::binary:
Dieses Flag garantiert, dass alles 1:1 übernommen wird, ohne Veränderung. Wennios::binarynicht gesetzt ist, dann darf die Bibliothek Änderungen durchführen. Auf Windows wird zum Beispiel aus einem\nein\r\n.\rhat übrigens genau den Wert 0x0D
Programmierst du übrigens C++ oder C?
<fstream>und die Klassen daraus sind zwar C++, aber 80-90% des restlichen Codes ist C.<stdio.h>ist zum Beispiel ein C Header, in C++ gibt es den gar nicht. Ausgaben und Umwandlungen kann man in C++ auch anders machen. Egal ob die WinAPI eine C Schnittstelle ist, man kann diese auch mit C++ Mitteln ansprechen.Grüssli
-
Dravere schrieb:
Hast du das HTTP-PDF nun gelesen?

Ja.

Man will es ja auch nachvollziehen können.Dravere schrieb:
Ehm, zu
ios::binary:
Dieses Flag garantiert, dass alles 1:1 übernommen wird, ohne Veränderung. Wennios::binarynicht gesetzt ist, dann darf die Bibliothek Änderungen durchführen.Achso, danke!
Dravere schrieb:
\rhat übrigens genau den Wert 0x0D
Lag ich ja ganz gut.

Dravere schrieb:
Programmierst du übrigens C++ oder C?
<fstream>und die Klassen daraus sind zwar C++, aber 80-90% des restlichen Codes ist C.<stdio.h>ist zum Beispiel ein C Header, in C++ gibt es den gar nicht. Ausgaben und Umwandlungen kann man in C++ auch anders machen. Egal ob die WinAPI eine C Schnittstelle ist, man kann diese auch mit C++ Mitteln ansprechen.Ich programmiere C++.
Wenn man mit VSC++ eine "Vorlage" erstellt, ist in dieser eine stdafx.h inkludiert. Der Inhalt dieser Datei enthält die Standardlibraries stdio.h und tchar.h.
Ohne stdio.h geht kein printf und ich wollte in diesem Testprogramm auf cout und Co verzichten, einfach um zu Prüfen, woran diese Veränderung des Codes lag.
Lieber die altbewährten Commands benutzen und auf Nummer sicher gehen.
Man weiß ja nie.

-
unlimieD.paSe schrieb:
Lieber die altbewährten Commands benutzen und auf Nummer sicher gehen.
Lieber die C++-Mittel verwenden und auf Nummer sicher gehen.

Wenn du schon in C++ C-Header verwendest, dann auch die richtige Version. Also
<cstdio>. Du brauchst dir von deiner IDE auch nichts vorschreiben zu lassen,<tchar.h>brauchst du beispielsweise kaum (gehört auch nicht zum C++-Standard). Und um meinen ersten Satz etwas mehr zu erläutern: Ich würde dir dringend empfehlen, dich mit den (üblichen) Sprach- und Bibliotheksmitteln von C++ auseinander zu setzen. Der Grund liegt einfach darin, dass viele Features aus C verbessert und durch typsichere, objektorientierte oder generell weniger fehleranfällige Pendants ersetzt wurden.
-
unlimieD.paSe schrieb:
Wenn man mit VSC++ eine "Vorlage" erstellt, ist in dieser eine stdafx.h inkludiert. Der Inhalt dieser Datei enthält die Standardlibraries stdio.h und tchar.h.
stdafx.h kann verändert werden, das ist einfach der vorkompilierte Header. Man kann ihn auch komplett abstellen, auch in den Vorlagen. Es gibt Leute, welche den gut finden, ich persönlich schalte das Teil immer ab. Ich arbeite zudem auch nur noch mit eigenen Vorlagen und nicht mehr denen von MSVS.
unlimieD.paSe schrieb:
Ohne stdio.h geht kein printf und ich wollte in diesem Testprogramm auf cout und Co verzichten, einfach um zu Prüfen, woran diese Veränderung des Codes lag.
In C++ verwendet man <cstdio> für den C Header <stdio.h>. Hier findest du eine schöne Übersicht über die Header in C++:
http://www.cplusplus.com/reference/unlimieD.paSe schrieb:
Lieber die altbewährten Commands benutzen und auf Nummer sicher gehen.
Dazu kann ich fast nur "hä?" sagen

Was ist anstd::coutnicht "altbewährt"? Da geht man sogar noch viel eher auf Nummer sich, als wenn man C Code in C++ verwendet
Grüssli
-
...von dem Killerargument der Typsicherheit von cout ganz zu schweigen

Zu chunked: Ups, das hab ich überlesen. Sorry vielmals.
-
Ich habe irgendwo eine Streambuffer-Klasse, die das Parsen der Chunks übernimmt und den "ungechunkten" Datenstrom herausgibt. Ich suche sie Dir später mal raus.
stellst du die auch hier ins forum?
-
Dravere schreib wenigstens Ja oder Nein.

-
proxyfoxy schrieb:
Dravere schreib wenigstens Ja oder Nein.

Das war aber LordJaxom...
bb
-
Ups, da hab ich mich vertan. Danke für den Hinweis unskilled. :=)
-
LordJaxom schreib wenigstens "Ja" oder "Nein, weil ...".

-
Nein, weil ich gerade bemerkt habe dass die Klasse auf die HttpReply-Klasse von der Bibliothek cxxtools (von tntnet) aufsetzt. D.h. bevor die Streambuffer-Klasse ihre Arbeit verrichten kann, muss das parsen der Header (was momentan in HttpReply geschieht) noch implementiert werden.
Aber ich denke ich werde sie tntnet zur Verfügung stellen, vielleicht baut er sie in cxxtools ein.
Wenn Du selbst cxxtools nutzt, kann ich die Klasse natürlich immernoch einstellen.
-
Hallo LordJaxom,
da ich mir das ganze nur zu Lernzwecken angucken wollte spielt die externe Abhängigkeit glaub ich nicht so eine große Rolle.
Würde mich freuen wenn du es ins Forum stellst oder an proxyfoxy@arcor.de schickst.

Danke.