<?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[Sockets: Empfangen einer unbekannten Anzahl von Bytes]]></title><description><![CDATA[<p>Hi,</p>
<p>der Receive-Aufruf an einem Socket schaut ja so aus:</p>
<pre><code>char buffer[1024];
int bytesRead = recv (socket, buffer, 1024, 0);
</code></pre>
<p>Kann ich die Puffergröße auch irgendwie dynamisch gestalten oder muss ich blockweise lesen, falls größere Datenmengen anstehen, etwa so:</p>
<pre><code>do {
  int bytesRead = recv (socket, buffer, 1024, 0);
  appendToAnotherBuffer(buffer);
} while (bytesRead==1024)
</code></pre>
<p>?</p>
<p>Gruß, Thomas</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/145985/sockets-empfangen-einer-unbekannten-anzahl-von-bytes</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 04:45:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/145985.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 03 May 2006 08:24:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Sockets: Empfangen einer unbekannten Anzahl von Bytes on Wed, 03 May 2006 08:35:17 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>der Receive-Aufruf an einem Socket schaut ja so aus:</p>
<pre><code>char buffer[1024];
int bytesRead = recv (socket, buffer, 1024, 0);
</code></pre>
<p>Kann ich die Puffergröße auch irgendwie dynamisch gestalten oder muss ich blockweise lesen, falls größere Datenmengen anstehen, etwa so:</p>
<pre><code>do {
  int bytesRead = recv (socket, buffer, 1024, 0);
  appendToAnotherBuffer(buffer);
} while (bytesRead==1024)
</code></pre>
<p>?</p>
<p>Gruß, Thomas</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050073</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050073</guid><dc:creator><![CDATA[Thomas++]]></dc:creator><pubDate>Wed, 03 May 2006 08:35:17 GMT</pubDate></item><item><title><![CDATA[Reply to Sockets: Empfangen einer unbekannten Anzahl von Bytes on Wed, 03 May 2006 08:33:16 GMT]]></title><description><![CDATA[<p>verstehe deine frage nicht. dann erzeug halt einen den puffer dynamisch und übergib ihn recv. wo ist das problem?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050080</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050080</guid><dc:creator><![CDATA[unreg]]></dc:creator><pubDate>Wed, 03 May 2006 08:33:16 GMT</pubDate></item><item><title><![CDATA[Reply to Sockets: Empfangen einer unbekannten Anzahl von Bytes on Wed, 03 May 2006 08:33:17 GMT]]></title><description><![CDATA[<p>Thomas++ schrieb:</p>
<blockquote>
<p>Kann ich die Puffergröße auch irgendwie dynamisch gestalten oder muss ich blockweise lesen, falls größere Datenmengen anstehen, etwa so:</p>
<pre><code>do {
  int bytesRead = recv (socket, buffer, 1024, 0);
  appendToAnotherBuffer(buffer);
} while (bytesRead==1024)
</code></pre>
</blockquote>
<p>ungefähr so, aber du darfst nicht einfach aufhören wenn du mal weniger als 1024 bytes bekommen hast, sondern erst wenn recv() SOCKET_ERROR oder 0 zurückgibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050081</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050081</guid><dc:creator><![CDATA[net 0]]></dc:creator><pubDate>Wed, 03 May 2006 08:33:17 GMT</pubDate></item><item><title><![CDATA[Reply to Sockets: Empfangen einer unbekannten Anzahl von Bytes on Wed, 03 May 2006 08:47:07 GMT]]></title><description><![CDATA[<p>unreg schrieb:</p>
<blockquote>
<p>verstehe deine frage nicht. dann erzeug halt einen den puffer dynamisch und übergib ihn recv. wo ist das problem?</p>
</blockquote>
<p>Wie schaut der Code denn aus? Ich muss doch die Größe eines Arrays bei der Implementierung festlegen.</p>
<p>Überarbeitet:</p>
<pre><code>char data[10];
	int bytesRead;
	CString output;

	while(true)
	{
		bytesRead = recv(serverSocket, (char*)&amp;data, strlen(data), 0);
		if (bytesRead == 0 || bytesRead == SOCKET_ERROR)
			break;
		output.Format(L&quot;Received %d Byte(s): %s\n&quot;, bytesRead, CString(data));
		wprintf(output);
	}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1050086</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050086</guid><dc:creator><![CDATA[Thomas++]]></dc:creator><pubDate>Wed, 03 May 2006 08:47:07 GMT</pubDate></item><item><title><![CDATA[Reply to Sockets: Empfangen einer unbekannten Anzahl von Bytes on Wed, 03 May 2006 08:55:01 GMT]]></title><description><![CDATA[<p>Kennst du malloc oder new[]?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050105</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050105</guid><dc:creator><![CDATA[fraage]]></dc:creator><pubDate>Wed, 03 May 2006 08:55:01 GMT</pubDate></item><item><title><![CDATA[Reply to Sockets: Empfangen einer unbekannten Anzahl von Bytes on Wed, 03 May 2006 09:02:37 GMT]]></title><description><![CDATA[<p>fraage schrieb:</p>
<blockquote>
<p>Kennst du malloc oder new[]?</p>
</blockquote>
<p>Habe Mitleid, ich komme aus der Java-Welt! <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1050110</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050110</guid><dc:creator><![CDATA[Thomas++]]></dc:creator><pubDate>Wed, 03 May 2006 09:02:37 GMT</pubDate></item><item><title><![CDATA[Reply to Sockets: Empfangen einer unbekannten Anzahl von Bytes on Wed, 03 May 2006 09:08:20 GMT]]></title><description><![CDATA[<p>Thomas++ schrieb:</p>
<blockquote>
<p>fraage schrieb:</p>
<blockquote>
<p>Kennst du malloc oder new[]?</p>
</blockquote>
<p>Habe Mitleid, ich komme aus der Java-Welt! <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>
</blockquote>
<p>es gibt wohl keinen java-programmierer auf der ganzen welt der kein 'new' kennt <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="😉"
    /><br />
aber davon mal abgesehen: ob du einen dynamischen buffer oder ein statisches array benutzt, ist doch für deinen fall egal, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050117</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050117</guid><dc:creator><![CDATA[net 0]]></dc:creator><pubDate>Wed, 03 May 2006 09:08:20 GMT</pubDate></item><item><title><![CDATA[Reply to Sockets: Empfangen einer unbekannten Anzahl von Bytes on Wed, 03 May 2006 09:12:58 GMT]]></title><description><![CDATA[<p>net schrieb:</p>
<blockquote>
<p>Thomas++ schrieb:</p>
<blockquote>
<p>fraage schrieb:</p>
<blockquote>
<p>Kennst du malloc oder new[]?</p>
</blockquote>
<p>Habe Mitleid, ich komme aus der Java-Welt! <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>
</blockquote>
<p>es gibt wohl keinen java-programmierer auf der ganzen welt der kein 'new' kennt <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>
</blockquote>
<p>Das bezog sich auch eher auf das Allokieren von Speicher. <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>
<blockquote>
<p>aber davon mal abgesehen: ob du einen dynamischen buffer oder ein statisches array benutzt, ist doch für deinen fall egal, oder?</p>
</blockquote>
<p>Scheint mir inzwischen auch so. Egal, wie lang ich den Puffer mache, es werden sowieso immer nur 3 Byte pro Zyklus übertragen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050118</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050118</guid><dc:creator><![CDATA[Thomas++]]></dc:creator><pubDate>Wed, 03 May 2006 09:12:58 GMT</pubDate></item><item><title><![CDATA[Reply to Sockets: Empfangen einer unbekannten Anzahl von Bytes on Wed, 03 May 2006 09:23:24 GMT]]></title><description><![CDATA[<p>Ja, weil an der Stelle das strlen() auch falsch ist <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="😉"
    /> (strlen() funktioniert nur mit korrekt initialisierten C-Strings, nicht mit willkürlich gefüllten (aka. nicht initialisierte) char-Arrays).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050131</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050131</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 03 May 2006 09:23:24 GMT</pubDate></item><item><title><![CDATA[Reply to Sockets: Empfangen einer unbekannten Anzahl von Bytes on Wed, 03 May 2006 09:32:57 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Ja, weil an der Stelle das strlen() auch falsch ist <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="😉"
    /> (strlen() funktioniert nur mit korrekt initialisierten C-Strings, nicht mit willkürlich gefüllten (aka. nicht initialisierte) char-Arrays).</p>
</blockquote>
<p>Danke. Hab ich auch gerade gemerkt. Mit sizeof() scheints zu funktionieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050137</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050137</guid><dc:creator><![CDATA[Thomas++]]></dc:creator><pubDate>Wed, 03 May 2006 09:32:57 GMT</pubDate></item></channel></rss>