<?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[Socket: &amp;quot;dynamischer&amp;quot; Puffer?]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich bastel z.Z. an einem &quot;simplen&quot; Socketserver und Socketclient, ähnlich wie er auf <a href="http://www.c-worker.ch" rel="nofollow">www.c-worker.ch</a> zu finden ist (ein gutes Tutorial).</p>
<p>Das Problem, dass ich jetzt habe ist, dass ich mehr Daten (String) versenden und empfangen will/muss, als der Puffer groß ist.</p>
<p>Wie kann ich es bewerkstelligen, dass recv das Ende des gesendeten Strings erkennt?</p>
<p>Ich habe mir für das Empfangen eine Funktion geschrieben:</p>
<pre><code class="language-cpp">string SocketReceiveMessage(SOCKET s_source)
{
	int int_result = 0;
	char chr_buffer[256];
	string str_message;

	do
	{
		int_result = recv(s_source, chr_buffer, 256, 0);
		if (int_result == 0)
			break;	// connection lost
		else if (int_result &lt; 0)
			break;	// error
		else
		{
			chr_buffer[int_result] = '\0';
			str_message.append(chr_buffer);
		}

	} while (int_result &gt; 0);

	return str_message;
}
</code></pre>
<p>Hier muss z.B. die andere Seiter erst die Verbindung kappen, damit diese Seite merkt, &quot;es kommt nix mehr&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/240932/socket-quot-dynamischer-quot-puffer</link><generator>RSS for Node</generator><lastBuildDate>Mon, 06 Apr 2026 05:46:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/240932.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 13 May 2009 16:07:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Socket: &amp;quot;dynamischer&amp;quot; Puffer? on Wed, 13 May 2009 16:07:50 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich bastel z.Z. an einem &quot;simplen&quot; Socketserver und Socketclient, ähnlich wie er auf <a href="http://www.c-worker.ch" rel="nofollow">www.c-worker.ch</a> zu finden ist (ein gutes Tutorial).</p>
<p>Das Problem, dass ich jetzt habe ist, dass ich mehr Daten (String) versenden und empfangen will/muss, als der Puffer groß ist.</p>
<p>Wie kann ich es bewerkstelligen, dass recv das Ende des gesendeten Strings erkennt?</p>
<p>Ich habe mir für das Empfangen eine Funktion geschrieben:</p>
<pre><code class="language-cpp">string SocketReceiveMessage(SOCKET s_source)
{
	int int_result = 0;
	char chr_buffer[256];
	string str_message;

	do
	{
		int_result = recv(s_source, chr_buffer, 256, 0);
		if (int_result == 0)
			break;	// connection lost
		else if (int_result &lt; 0)
			break;	// error
		else
		{
			chr_buffer[int_result] = '\0';
			str_message.append(chr_buffer);
		}

	} while (int_result &gt; 0);

	return str_message;
}
</code></pre>
<p>Hier muss z.B. die andere Seiter erst die Verbindung kappen, damit diese Seite merkt, &quot;es kommt nix mehr&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1710046</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1710046</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Wed, 13 May 2009 16:07:50 GMT</pubDate></item><item><title><![CDATA[Reply to Socket: &amp;quot;dynamischer&amp;quot; Puffer? on Wed, 13 May 2009 16:36:05 GMT]]></title><description><![CDATA[<p>Entweder Du sendest zuerst die Länge (4 Byte), dann den Inhalt (n Bytes) oder Du verwendest ein End of String Zeichen und liest bis das besagte Zeichen kommt.</p>
<p>BTW: Ich würde die empfangenen Daten zuerst in ein Buffer (z.B. std::vector) speichern und wenn dein Typ (z.B. c- string) vollständig übermittelt ist die konvertierung vornehmen.</p>
<p>Simon</p>
<p>Edit: Im folgenden Post handelt es sich exakt um daselbe Problem:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-240764-and-highlight-is-.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-240764-and-highlight-is-.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1710061</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1710061</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Wed, 13 May 2009 16:36:05 GMT</pubDate></item><item><title><![CDATA[Reply to Socket: &amp;quot;dynamischer&amp;quot; Puffer? on Wed, 13 May 2009 16:44:22 GMT]]></title><description><![CDATA[<p>Ok. Danke für's Erste. Das habe ich mir eigentlich auch schon fast gedacht.<br />
Ich werde mal beides ausprobieren und dann mal gucken.<br />
Aber erst Morgen. Jetzt geht's heim. <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/1710072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1710072</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Wed, 13 May 2009 16:44:22 GMT</pubDate></item><item><title><![CDATA[Reply to Socket: &amp;quot;dynamischer&amp;quot; Puffer? on Wed, 13 May 2009 17:15:06 GMT]]></title><description><![CDATA[<p>ich würde die typen nicht abkürzen und zur sicherheit alle variablen initialisieren.</p>
<pre><code class="language-cpp">int int_result = 0; 
char char_buffer[256] = {0}; 
string string_message = &quot;&quot;;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1710081</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1710081</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 13 May 2009 17:15:06 GMT</pubDate></item><item><title><![CDATA[Reply to Socket: &amp;quot;dynamischer&amp;quot; Puffer? on Wed, 13 May 2009 17:38:24 GMT]]></title><description><![CDATA[<p>ist das eronisch gemeind?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1710091</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1710091</guid><dc:creator><![CDATA[oO]]></dc:creator><pubDate>Wed, 13 May 2009 17:38:24 GMT</pubDate></item></channel></rss>