<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[[BCB] Server&#x2F;Client Socket, Internetseite auslesen: CHUNKED]]></title><description><![CDATA[<p>Hallo liebes Forum,</p>
<p>habe mich nach großer Hilfe bei mehreren Problemen in diesem Board nun auch endlich registriert. Aber nun zu meinem aktuellen Problem:</p>
<p>Ich bin gerade dabei ein Programm zu schreiben was mir einen bestimmten Quelltext von einer Seite ausliest. Schön und gut habe ich auch nen genialen Beitrag hier im Board (oder 'magazin') gefunden:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-169861.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-169861.html</a></p>
<p>Der mir das alles erklären konnte. Ich habs auch super geschafft bis mir der Server als HTTP Response auf einmal gesagt hat das er mir seine Seite nun gechunked schickt:</p>
<pre><code>Http Response:
(...)
HTTP 1.1 200 OK
transfer-encoding: chunked
(...)
</code></pre>
<p>Doch hat der Server einfach nichts mehr weiter geschickt, sprich:</p>
<pre><code>17b2
&lt;html&gt;&lt;body&gt; textext
</code></pre>
<p>habe ich bekommen doch dann hat er sich einfach Disconnected. Das heisst ich hab den kompletten 2. Chunk Nicht bekommen. Jetzt weiss ich nicht, was ich jetzt tuen soll, wenn ich mich neuverbinde und nochmal den Request sende bekommen ich die gleiche Antwort vom Server.</p>
<p>Ich hoffe ihr wisst was ich meine, und könnt mir helfen,</p>
<p>Vielen Dank,<br />
squint <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/266351/bcb-server-client-socket-internetseite-auslesen-chunked</link><generator>RSS for Node</generator><lastBuildDate>Thu, 03 Sep 2026 07:14:14 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/266351.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 07 May 2010 14:54:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [BCB] Server&#x2F;Client Socket, Internetseite auslesen: CHUNKED on Fri, 07 May 2010 14:54:33 GMT]]></title><description><![CDATA[<p>Hallo liebes Forum,</p>
<p>habe mich nach großer Hilfe bei mehreren Problemen in diesem Board nun auch endlich registriert. Aber nun zu meinem aktuellen Problem:</p>
<p>Ich bin gerade dabei ein Programm zu schreiben was mir einen bestimmten Quelltext von einer Seite ausliest. Schön und gut habe ich auch nen genialen Beitrag hier im Board (oder 'magazin') gefunden:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-169861.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-169861.html</a></p>
<p>Der mir das alles erklären konnte. Ich habs auch super geschafft bis mir der Server als HTTP Response auf einmal gesagt hat das er mir seine Seite nun gechunked schickt:</p>
<pre><code>Http Response:
(...)
HTTP 1.1 200 OK
transfer-encoding: chunked
(...)
</code></pre>
<p>Doch hat der Server einfach nichts mehr weiter geschickt, sprich:</p>
<pre><code>17b2
&lt;html&gt;&lt;body&gt; textext
</code></pre>
<p>habe ich bekommen doch dann hat er sich einfach Disconnected. Das heisst ich hab den kompletten 2. Chunk Nicht bekommen. Jetzt weiss ich nicht, was ich jetzt tuen soll, wenn ich mich neuverbinde und nochmal den Request sende bekommen ich die gleiche Antwort vom Server.</p>
<p>Ich hoffe ihr wisst was ich meine, und könnt mir helfen,</p>
<p>Vielen Dank,<br />
squint <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1893838</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1893838</guid><dc:creator><![CDATA[Squint]]></dc:creator><pubDate>Fri, 07 May 2010 14:54:33 GMT</pubDate></item><item><title><![CDATA[Reply to [BCB] Server&#x2F;Client Socket, Internetseite auslesen: CHUNKED on Fri, 07 May 2010 15:22:08 GMT]]></title><description><![CDATA[<p>Bist du sicher, dass du die Verbindung nicht womöglich selbst beendest oder zumindest die Daten nicht empfängst/verarbeitest?<br />
Ansonsten könntest du die getestete Internetseite angeben, damit man das mal überprüfen kann. Wenn's bei uns funktioniert, müsstest du mal deinen Code posten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1893848</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1893848</guid><dc:creator><![CDATA[Athar]]></dc:creator><pubDate>Fri, 07 May 2010 15:22:08 GMT</pubDate></item><item><title><![CDATA[Reply to [BCB] Server&#x2F;Client Socket, Internetseite auslesen: CHUNKED on Fri, 07 May 2010 16:09:43 GMT]]></title><description><![CDATA[<p>Ich bin mir komplett sicher, alles was rein UNR raus geht wird mir direkt ausgegeben. Außerdem wird mir sofort ausgegebn wenn der server disconnected.</p>
<p>der gibt mir auch nicht die größe des nächsten Chunks an, sonder er hört einfach auf, und beendet die Verbindung (er überträgt 8095 zeichen).</p>
<p>Da der Code so komplex ist, werde ich ein paar Code Segmente nur hochstellen, die die ich am wichtigsten halte:</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{ 
univ = Edit1-&gt;Text; 	//Universelle URL
Form1-&gt;ClientSocket1-&gt;Host = univ;
Form1-&gt;ClientSocket1-&gt;Active=true;	//Verbinden
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ClientSocket1Connect(TObject *Sender,
      TCustomWinSocket *Socket)
{
header = &quot;Host: &quot;+Edit1-&gt;Text+&quot;\r\n&quot;;
header += &quot;User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 ( .NET CLR 3.5.30729)\r\n&quot;;
header += &quot;Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n&quot;;
header += &quot;Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3\r\n&quot;;
header += &quot;Accept-Encoding: identity\r\n&quot;;
header += &quot;Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n&quot;;
header += &quot;Keep-Alive: 115\r\n&quot;;
header += &quot;Connection: keep-alive\r\n&quot;;

//ausgabe wenn connected:

Memo1-&gt;Lines-&gt;Add(&quot;Connected&quot;);

        univ = Edit1-&gt;Text;
        Senden(univ);
        // Hier wird dem Header noch ein paar infos hinzugefügt (wohin, refer,leere Line), der header it Völlig in Ordnung!

}
//---------------------------------------------------------------------------
void __fastcall TForm1::ClientSocket1Read(TObject *Sender,
      TCustomWinSocket *Socket)
{
//Alles gesendete Wird hier mir ausgegebn:

        buf=Socket-&gt;ReceiveText();
        Memo1-&gt;Lines-&gt;Add(buf);

}
//---------------------------------------------------------------------------

void __fastcall TForm1::ClientSocket1Disconnect(TObject *Sender,
      TCustomWinSocket *Socket)
{
// Ausgabe wenn Disconnect:
Memo1-&gt;Lines-&gt;Add(&quot;DISCONNECT&quot;);
}
//---------------------------------------------------------------------------
</code></pre>
<p>nach dem 1. Chunk disconnected der Client.<br />
Ich hoffe das beschleunigt die Lösungssuche,</p>
<p>@EDIT: Im übrigen, der Server hat Apache.</p>
<p>mfg,<br />
squint <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1893882</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1893882</guid><dc:creator><![CDATA[Squint]]></dc:creator><pubDate>Fri, 07 May 2010 16:09:43 GMT</pubDate></item><item><title><![CDATA[Reply to [BCB] Server&#x2F;Client Socket, Internetseite auslesen: CHUNKED on Fri, 07 May 2010 16:43:59 GMT]]></title><description><![CDATA[<p>Ist dein Empfangspuffer zufällig 8 KB groß?<br />
Ersetze auch mal keep-alive-Zeilen durch &quot;Connection: close&quot;, vermutlich unterstützt dein Code das nicht (sollte aber nichts mit dem Problem zu tun haben).<br />
Ein potentielles Problem sehe ich bei Memo1-&gt;Lines-&gt;Add(buf), denn wenn in den empfangenen Daten ein Nullbyte vorkommt, endet die Ausgabe an dieser Stelle. Sollte in einer HTML-Seite aber eigentlich nicht vorkommen.</p>
<p>Edit: gibt ReceiveText() einen AnsiString zurück? Haben diese eine Maximallänge?<br />
Empfange die Daten besser mit einem binären Receive und schreibe sie in eine Datei. Ich habe den Verdacht, dass sich dein Problem damit erledigt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1893911</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1893911</guid><dc:creator><![CDATA[Athar]]></dc:creator><pubDate>Fri, 07 May 2010 16:43:59 GMT</pubDate></item><item><title><![CDATA[Reply to [BCB] Server&#x2F;Client Socket, Internetseite auslesen: CHUNKED on Fri, 07 May 2010 18:54:43 GMT]]></title><description><![CDATA[<p>Hallo und Danke fuer die schnelle Antwort <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Also, ich habe mir das ganze nochmal angeschaut, und zwar steht in dem RESPONSE Header vom Server, als Größenangabe des 1. Chunks: 1f73 (HEX) entspricht der Zahl 8 051.</p>
<p>Soo jetzt hab ich mal geguckt wie groß &quot;buf&quot; ist, buf ist 8 129 Zeichen lang, verglichen mit 8 051 Zeichen ist das garnichtmal so knapp, und mitkalkulieren muss man noch das man den Header nicht mit einbeziehen darf, womit ich mit sehr hoher Wahrscheinlichkeit sagen kann, dass der Chunk erfolgreich angekommen ist.</p>
<p>Das Problem muss also leiider irgendwo anders liegen, aber ich danke dir auf jeden fall fuer deine Hilfe!</p>
<p>mfg,</p>
<p>squint <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1893966</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1893966</guid><dc:creator><![CDATA[Squint]]></dc:creator><pubDate>Fri, 07 May 2010 18:54:43 GMT</pubDate></item><item><title><![CDATA[Reply to [BCB] Server&#x2F;Client Socket, Internetseite auslesen: CHUNKED on Sun, 09 May 2010 10:14:30 GMT]]></title><description><![CDATA[<p>Hat den niemand sonst eine Idee woran es liegen könnte?</p>
<p>gΓεετz,</p>
<p>squint</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1894569</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1894569</guid><dc:creator><![CDATA[Squint]]></dc:creator><pubDate>Sun, 09 May 2010 10:14:30 GMT</pubDate></item><item><title><![CDATA[Reply to [BCB] Server&#x2F;Client Socket, Internetseite auslesen: CHUNKED on Sun, 09 May 2010 10:30:29 GMT]]></title><description><![CDATA[<p>Was ist <code>buf</code> ? Was ist <code>ReceiveText</code> ? Was speicherst du alles in <code>buf</code> ?<br />
Falls genügend ankommt, aber nicht genügend angezeigt wird, dann klingt das als erstes für mich, dass irgendwo eine ungewollte Nullterminierung stattfindet <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Und zu deinem Code:<br />
Wäre es irgendwie nicht viel besser zu zeigen, wie du empfängst? Ich meine der Fehler tritt doch beim Empfangen auf, was sollen wir dann mit diesem Code, welcher fast nur die Interaktion mit dem User Interface zeigt? Mich würde der Code hinter <code>ReceiveText</code> interessieren.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1894579</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1894579</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sun, 09 May 2010 10:30:29 GMT</pubDate></item><item><title><![CDATA[Reply to [BCB] Server&#x2F;Client Socket, Internetseite auslesen: CHUNKED on Sun, 09 May 2010 11:12:19 GMT]]></title><description><![CDATA[<p>Hallo und Danke fuer deine Atnwort Dravere!</p>
<p><code>buf</code> ist ein String. <code>Ansi String ReceiveText();</code> gibt nichts weiter zurück, als einen String, empfangen von dem ClientSocket. Die Funktion ist schon in der Borland C++ 2006 mitdrin, und normalerweise klappt sie auch super. (Vergleichbar mit &quot; <code>recv()</code> &quot;)</p>
<p>Ich bin mir auch garnicht sicher ob das überhaupt ein Problem in der Funktion ReceiveText() ist, sonder das vielleicht irgendwie ich mich neuverbinden muss...</p>
<p>Das eine Nullterminierung stattgefunden hat ist sehr unwahrscheinlich, denn wie schon gesagt ist <code>buf</code> nach dem Empfangen vom ClientSocket 8129 Zeichen groß, (getestet mit <code>buf.length()</code> ), und nach Angaben des Servers, der gesagt hat der gesendete Chunk wäre 8051 Zeichen groß, ist das ziemlich Nahe.</p>
<pre><code>buf.Length() - Header größe [e]asymp[/e] 8051
</code></pre>
<p>Hoffentlich findet irgendjemand den Fehler oder hat sowas schonmal gelöst.</p>
<p><strong>@EDIT</strong> So da ihr nun alle auf &quot;\0&quot; in <code>buf</code> tippt, hab ich mir das mal angeschaut, kann also WOHL sein, nur was sucht ne Null terminierung in einer HTML Seite?</p>
<p>So 2. Frage: Wie krieg ich die nullterm. wieder weg; ^^</p>
<p>mfg,</p>
<p>squint <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1894590</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1894590</guid><dc:creator><![CDATA[Squint]]></dc:creator><pubDate>Sun, 09 May 2010 11:12:19 GMT</pubDate></item><item><title><![CDATA[Reply to [BCB] Server&#x2F;Client Socket, Internetseite auslesen: CHUNKED on Sun, 09 May 2010 11:28:52 GMT]]></title><description><![CDATA[<p>Squint schrieb:</p>
<blockquote>
<p><code>buf</code> ist ein String. <code>Ansi String ReceiveText();</code> gibt nichts weiter zurück, als einen String, empfangen von dem ClientSocket. Die Funktion ist schon in der Borland C++ 2006 mitdrin, und normalerweise klappt sie auch super. (Vergleichbar mit &quot; <code>recv()</code> &quot;)</p>
</blockquote>
<p>Du befindest dich hier aber im Standard C++ Forum, erwarte also nicht, dass jemand weiss, was diese Funktion tut. Ich habe nämlich keine Ahnung und finde auf die Schnelle auch keine Dokumentation dazu. Ich programmiere nie in Borland oder mit der VCL.</p>
<p>Squint schrieb:</p>
<blockquote>
<p>Das eine Nullterminierung stattgefunden hat ist sehr unwahrscheinlich, denn wie schon gesagt ist <code>buf</code> nach dem Empfangen vom ClientSocket 8129 Zeichen groß, (getestet mit <code>buf.length()</code> ), und nach Angaben des Servers, der gesagt hat der gesendete Chunk wäre 8051 Zeichen groß, ist das ziemlich Nahe.</p>
</blockquote>
<p>Das ist völlig egal. In einen <code>std::string</code> kann ich einen String speichern, welcher ausschliesslich aus Nullterminierungen besteht und 8129 Zeichen lang ist. Ich nehme mal an, dass der AnsiString von VCL sehr ähnlich funktioniert (übrigen auch kein Standard C++, also muss er auch nicht in diesem Forum bekannt sein). Solche Stringklassen speichern die Länge separat ab und sind somit nicht mehr von der Nullterminierung abhängig, bzw. eine Nullterminierung kann in ihnen ohne Problem auftreten. Wenn man dann allerdings mit C Schnittstellen kommuniziert, und man daraus wieder ein C String baut, dann kann es zu Problemen kommen.</p>
<p>Squint schrieb:</p>
<blockquote>
<p>Hoffentlich findet irgendjemand den Fehler oder hat sowas schonmal gelöst.</p>
</blockquote>
<p>Recht unwahrscheinlich, da es ein sehr spezifischer Fehler ist. Der Fehler also in deinem geschriebenen Code liegt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Squint schrieb:</p>
<blockquote>
<p><strong>@EDIT</strong> So da ihr nun alle auf &quot;\0&quot; in <code>buf</code> tippt, hab ich mir das mal angeschaut, kann also WOHL sein, nur was sucht ne Null terminierung in einer HTML Seite?</p>
</blockquote>
<p>Kommt darauf an, wie du die Sache einliest. Kann schon sein, dass da plötzlich irgendwo eine Nullterminierung reinrutscht.</p>
<p>Squint schrieb:</p>
<blockquote>
<p>So 2. Frage: Wie krieg ich die nullterm. wieder weg;</p>
</blockquote>
<p>Es geht nicht darum, dass du sie danach wegkriegst, sondern dass sie gar nicht erst passiert. Ich brauche allerdings Informationen zu ReceiveText, sonst kann ich dir nicht weiterhelfen. Gut wäre auch ein kurzes, minimales und kompilierbares Beispiel, wo der Fehler auch auftritt.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1894603</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1894603</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sun, 09 May 2010 11:28:52 GMT</pubDate></item></channel></rss>