<?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) problem bei empfangsfunktion]]></title><description><![CDATA[<p>hallo<br />
wenn ich diese funktion hier in meinen string etwas einlesen lasse, so gibt mir das programm den string nicht aus, wenn ich das rauskommentierte jedoch &quot;aktiviere&quot;, dann erscheint alles perfekt, es wird also empfangen. warum gehts nicht?</p>
<pre><code class="language-cpp">std::string RecvAllEx(int socket)
{
	string RecvBytes;
	stringstream buf (RecvBytes);
	char c;
	int result;
	do
	{
		result = recv(socket, &amp;c, 1, 0);
		if(result == 0)
		{
			return RecvBytes;
		}
		buf&lt;&lt;c;
		//cout&lt;&lt;c;

	} while (result &gt; 0);
	throw CreateSocketError();
}
</code></pre>
<p>createsocketerror baut aufgrund von wsagetlasterror eine exception.</p>
<p>greetz</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/218513/socket-problem-bei-empfangsfunktion</link><generator>RSS for Node</generator><lastBuildDate>Fri, 09 Oct 2026 02:20:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/218513.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 21 Jul 2008 18:55:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to (socket) problem bei empfangsfunktion on Tue, 22 Jul 2008 10:47:39 GMT]]></title><description><![CDATA[<p>hallo<br />
wenn ich diese funktion hier in meinen string etwas einlesen lasse, so gibt mir das programm den string nicht aus, wenn ich das rauskommentierte jedoch &quot;aktiviere&quot;, dann erscheint alles perfekt, es wird also empfangen. warum gehts nicht?</p>
<pre><code class="language-cpp">std::string RecvAllEx(int socket)
{
	string RecvBytes;
	stringstream buf (RecvBytes);
	char c;
	int result;
	do
	{
		result = recv(socket, &amp;c, 1, 0);
		if(result == 0)
		{
			return RecvBytes;
		}
		buf&lt;&lt;c;
		//cout&lt;&lt;c;

	} while (result &gt; 0);
	throw CreateSocketError();
}
</code></pre>
<p>createsocketerror baut aufgrund von wsagetlasterror eine exception.</p>
<p>greetz</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1551159</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551159</guid><dc:creator><![CDATA[just-another-programmer]]></dc:creator><pubDate>Tue, 22 Jul 2008 10:47:39 GMT</pubDate></item><item><title><![CDATA[Reply to (socket) problem bei empfangsfunktion on Mon, 21 Jul 2008 20:09:31 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>schon mal versucht den Puffer nach der Ausgabe zu leeren; cout &lt;&lt; c &lt;&lt; endl;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1551206</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551206</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 21 Jul 2008 20:09:31 GMT</pubDate></item><item><title><![CDATA[Reply to (socket) problem bei empfangsfunktion on Mon, 21 Jul 2008 20:22:13 GMT]]></title><description><![CDATA[<p>hallo.<br />
daran kanns nicht liegen.</p>
<p>ich habe jetzt</p>
<pre><code class="language-cpp">buf&lt;&lt;c; //DAS
//mit
RecvBytes.push_back(c);//dem
</code></pre>
<p>ersetzt und den stringstream da komplett herausgenommen. es passiert immernoch nix. außer wenn ich den sender schließe, dass ne exception geworfen wird, dass die verbindung beendet worden ist...</p>
<p>greetz</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1551210</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551210</guid><dc:creator><![CDATA[just-another-programmer]]></dc:creator><pubDate>Mon, 21 Jul 2008 20:22:13 GMT</pubDate></item><item><title><![CDATA[Reply to (socket) problem bei empfangsfunktion on Mon, 21 Jul 2008 20:24:02 GMT]]></title><description><![CDATA[<p>Du musst die Daten des Stringstreams schon noch in den String übertragen, den du da zurückgibst. Das passiert nicht automatisch, nur weil du den Stringstream mit dem String als Konstruktorparameter erzeugst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1551213</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551213</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Mon, 21 Jul 2008 20:24:02 GMT</pubDate></item><item><title><![CDATA[Reply to (socket) problem bei empfangsfunktion on Mon, 21 Jul 2008 20:34:11 GMT]]></title><description><![CDATA[<p>wenn ich aber keinen stringstream mehr benutze, und trotzdem noch nix erscheint? (arbeite wie gesagt jetzt mit push_back())</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1551218</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551218</guid><dc:creator><![CDATA[just-another-programmer]]></dc:creator><pubDate>Mon, 21 Jul 2008 20:34:11 GMT</pubDate></item><item><title><![CDATA[Reply to (socket) problem bei empfangsfunktion on Mon, 21 Jul 2008 21:23:26 GMT]]></title><description><![CDATA[<p>Du erwartest, dass dir ein Text auf der Konsole ausgegeben wird, nicht?</p>
<p>Das machst du ja nirgendwo anderst, als bei buff &lt;&lt; c;</p>
<p>Und wenn du das nicht drin hast, dann wird hald auch nichts ausgegeben. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Im übrigen gibts du RecvBytes zurück, ohne etwas anderes, als eine einzige Zuweisung zu machen. (Sprich der Rückgabewert ist so nutzlos).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1551241</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551241</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Mon, 21 Jul 2008 21:23:26 GMT</pubDate></item><item><title><![CDATA[Reply to (socket) problem bei empfangsfunktion on Tue, 22 Jul 2008 01:53:52 GMT]]></title><description><![CDATA[<p>just-another-programmer schrieb:</p>
<blockquote>
<pre><code class="language-cpp">std::string RecvAllEx (int socket) //ich würd statt int SOCKET nehmen...
{
	std::string RecvBytes; //würd nen std::vector &lt;char&gt; nehmen... wenn du später damit weiterarbeiten willst vll auch deque, damit du die zeichen, die du vorn bearbeitet hast, besser &quot;rausschmeißen&quot; kannst...
	char c; //ich würd ja mehrere bytes auf einmal versuchen, zu empfangen...
	int result (0);
	do
	{
		result = recv(socket, &amp;c, 1, 0);
		if (result == SOCKET_ERROR)
		{
			throw CreateSocketError();
		}
		else if (result)
		{
			RecvBytes.push_back (c);
		}
	} while (result);
	return RecvBytes;
}
</code></pre>
</blockquote>
<p>also meine lösung würde so aussehen:</p>
<pre><code class="language-cpp">//global:
const int recv_buffer_length (20); //size_t würde zwar an sich besser passen aber die winapi-fkt will ja nen int... mir war gerade mal nach 20 - hat nix zu bedeuten...

std::deque &lt;char&gt; RecvAllEx (SOCKET socket)
{
	std::deque &lt;char&gt; RecvBytes;
	char c[recv_buffer_length];
	int RValue (0);
	do
	{
		RValue = recv (socket, &amp;c, recv_buffer_length, 0))
		for (char *i (&amp;c[0]), *e (&amp;c[RValue]); i != e; ++i)
		{
			RecvBytes.push_back (*i);
		}
		if (RValue == SOCKET_ERROR)
			throw CreateSocketError();
	} while (RValue == recv_buffer_length);
	return RecvBytes;
}
</code></pre>
<p>btw:</p>
<p>MSDN schrieb:</p>
<blockquote>
<p>If no incoming data is available at the socket, the recv call blocks and waits for data to arrive according to the blocking rules defined for WSARecv with the MSG_PARTIAL flag not set unless the socket is nonblocking.</p>
</blockquote>
<p>heißt: du blockierst mit der funktion also so lange, bis die verbindung abbricht... kA, ob das ne tolle idee ist - aber du wirst scho wissen, was du machst ^^</p>
<p>bb <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>PS: Zu überlegen wäre auch noch - wenn du sehr viel empfängst, ob man das kopieren des strings/vectors/deque/.... irgendwie verhindern könnte...</p>
<pre><code class="language-cpp">struct TRecv
{
//entweder, du nimmst &quot;recv_buffer_length&quot; hier als static member mit rein oder machst es so:
std::deque &lt;char&gt; RecvBytes;
TRecv (const SOCKET socket_nr, const int recv_buffer_length = 20) : RecvBytes (0)
{
	char *c buf = new char[recv_buffer_length];
	int RValue (0);
	do
	{
		RValue = recv (socket, &amp;c, recv_buffer_length, 0))
		for (char *i (c), *e (c + RValue); i != e; ++i)
		{
			RecvBytes.push_back (*i);
		}
		if (RValue == SOCKET_ERROR)
			{
				delete [] c;
				throw CreateSocketError();
			}
	} while (RValue == recv_buffer_length);
	delete [] c;
}
};
</code></pre>
<p>wenn du es als template mit default-argument machst, kommste auch um den pointer an sich rum ^^</p>
<pre><code class="language-cpp">TRecv temp (socketnummer);
//temp.RecvBytes ...
</code></pre>
<p>ist alles ungetestet - sollte aber hoffentlich (größten teils ^^) gehen ;o)</p>
<p>tschö</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1551305</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551305</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Tue, 22 Jul 2008 01:53:52 GMT</pubDate></item><item><title><![CDATA[Reply to (socket) problem bei empfangsfunktion on Tue, 22 Jul 2008 03:05:55 GMT]]></title><description><![CDATA[<p>oh.. das gefällt mir nich:</p>
<pre><code class="language-cpp">for (char *i (&amp;c[0]), *e (&amp;c[RValue]); i != e; ++i)
        {
            RecvBytes.push_back (*i);
        }
</code></pre>
<p>lieber so</p>
<pre><code class="language-cpp">for (char *i=c,*e= (c+RValue); i != e; ++i)
          RecvBytes.push_back (*i);
</code></pre>
<p>aber jedem das seine^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1551312</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551312</guid><dc:creator><![CDATA[HumanCompiler]]></dc:creator><pubDate>Tue, 22 Jul 2008 03:05:55 GMT</pubDate></item><item><title><![CDATA[Reply to (socket) problem bei empfangsfunktion on Tue, 22 Jul 2008 06:46:45 GMT]]></title><description><![CDATA[<p>bitte beim nächsten mal an einen aussagekräftigen Thread-Titel denken, damit andere Nutzer die Chance haben, über die Suchfunktion, geeignete Threads für ihr Problem zu finden.</p>
<p>&quot;warum funktioniert das nicht?&quot; ist daher nicht unbedingt die erste Wahl <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/1551363</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551363</guid><dc:creator><![CDATA[It0101]]></dc:creator><pubDate>Tue, 22 Jul 2008 06:46:45 GMT</pubDate></item><item><title><![CDATA[Reply to (socket) problem bei empfangsfunktion on Tue, 22 Jul 2008 10:58:55 GMT]]></title><description><![CDATA[<p>hallo</p>
<p>@ drakon: ahhh.. nee ich erwarte eben nicht von der funktion, dass der text auf der konsole ausgegeben wird. die funktion soll das empfangene in den string reinpacken und den dann zurückgeben.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/16305">@unskilled</a>: woah. danke, da werd ich mich jetzt mal durcharbeiten, mal sehn ob deine variante das macht, was ich möchte, sonst frag ich hier nochmal <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><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/6029">@It0101</a>: schon erledigt <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/1551538</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551538</guid><dc:creator><![CDATA[just-another-programmer]]></dc:creator><pubDate>Tue, 22 Jul 2008 10:58:55 GMT</pubDate></item><item><title><![CDATA[Reply to (socket) problem bei empfangsfunktion on Tue, 22 Jul 2008 11:13:35 GMT]]></title><description><![CDATA[<p>hallo</p>
<p>soo.. ich habe jetzt meine eigene funktion nochmal wie folgt bearbeitet:</p>
<pre><code class="language-cpp">std::string RecvAllEx(int socket)
{
	string RecvBytes;
	char c;
	int result;
	do
	{
		cout&lt;&lt;&quot;empfange:&quot;;
		result = recv(socket, &amp;c, 1, 0);
		if(result == 0 || c == '\0')
		{
			return RecvBytes;
		}
		cout&lt;&lt;c&lt;&lt;endl;
		RecvBytes.push_back(c);
		cout&lt;&lt;&quot;recvbytes: &quot;&lt;&lt;RecvBytes&lt;&lt;endl;
		//cout&lt;&lt;c;

	} while (result &gt; 0);
	throw CreateSocketError();
}
</code></pre>
<p>die ausgabe:</p>
<blockquote>
<p>empfange:d<br />
recvbytes: d<br />
empfange:i<br />
recvbytes: di<br />
empfange:e<br />
recvbytes: die<br />
empfange:<br />
recvbytes: die<br />
empfange:n<br />
recvbytes: die n<br />
empfange:a<br />
recvbytes: die na<br />
empfange:c<br />
recvbytes: die nac<br />
empfange:h<br />
recvbytes: die nach<br />
empfange:r<br />
recvbytes: die nachr<br />
empfange:i<br />
recvbytes: die nachri<br />
empfange:c<br />
recvbytes: die nachric<br />
empfange:h<br />
recvbytes: die nachrich<br />
empfange:t<br />
recvbytes: die nachricht<br />
empfange:<br />
recvbytes: die nachricht<br />
empfange:h<br />
recvbytes: die nachricht h<br />
empfange:i<br />
recvbytes: die nachricht hi<br />
empfange:e<br />
recvbytes: die nachricht hie<br />
empfange:r<br />
recvbytes: die nachricht hier<br />
empfange:r<br />
recvbytes: die nachricht hierr<br />
Socket-Fehler #10054: Eine vorhandene Verbindung wurde vom Remotehost geschlosse<br />
n.</p>
<p>Drücken Sie eine beliebige Taste . . .</p>
</blockquote>
<p>das doppelte r entstand aber auch erst, als ich den client, der sendet, geschlossen hatte. also scheint er den char nochmal zu übernehmen und DANN erst die exception zu werfen.</p>
<p>aber, das ist wirklich nicht das, was ich haben will. gibt es eine möglichkeit, dass ich die funktion nicht blockierend mache? oder gibt es eine möglichkeit, zu sagen: &quot;hier ists vorbei&quot;?</p>
<p>greetz</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1551553</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551553</guid><dc:creator><![CDATA[just-another-programmer]]></dc:creator><pubDate>Tue, 22 Jul 2008 11:13:35 GMT</pubDate></item><item><title><![CDATA[Reply to (socket) problem bei empfangsfunktion on Tue, 22 Jul 2008 16:27:49 GMT]]></title><description><![CDATA[<p>just-another-programmer schrieb:</p>
<blockquote>
<p>soo.. ich habe jetzt meine eigene funktion nochmal wie folgt bearbeitet:</p>
<pre><code class="language-cpp">std::string RecvAllEx(int socket) //warum nutzt du nicht SOCKET socket?
{
	string RecvBytes; //warum hier string und oben std::string?
	char c;
	int result;
	do
	{
		cout&lt;&lt;&quot;empfange:&quot;;
		result = recv (socket, &amp;c, 1, 0);
		if (result == 0 || c == '\0') //würd ich nicht so machen - so verbaust du dir die möglichkeit, später doch mal was anderes, als strings zu versenden (dateien/....)
		{
			return RecvBytes;
		}
		cout&lt;&lt;c&lt;&lt;endl;
		RecvBytes.push_back(c);
		cout&lt;&lt;&quot;recvbytes: &quot;&lt;&lt;RecvBytes&lt;&lt;endl;
		//cout&lt;&lt;c;
	} while (result &gt; 0); //!= SOCKET_ERROR...
	throw CreateSocketError();
}
</code></pre>
<pre><code>recvbytes: die nachricht hier
empfange:r
recvbytes: die nachricht hierr
Socket-Fehler #10054: Eine vorhandene Verbindung wurde vom Remotehost geschlosse
n.
</code></pre>
</blockquote>
<p><code>das hier liegt auch einfach mal daran, dass du es noch immer anders gemacht hast, als ich es gemacht hab...</code><br />
recv gibt nen SOCKET_ERROR wieder... c ist noch das vom letzten mal... =&gt; r wieder angehangen und erst dann wird die exception geworfen...</p>
<blockquote>
<p>aber, das ist wirklich nicht das, was ich haben will. gibt es eine möglichkeit, dass ich die funktion nicht blockierend mache? oder gibt es eine möglichkeit, zu sagen: &quot;hier ists vorbei&quot;?</p>
</blockquote>
<p>naja - um threads wirste ne rumkommen...</p>
<p>aber:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-218469.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-218469.html</a><br />
5. post oder so:</p>
<p>unskilled schrieb:</p>
<blockquote>
<p>Es gibt auch WSAEvents - die kannste auslösen lassen, wenn du was empfängst...</p>
<p>Also per WinAPI:</p>
<pre><code class="language-cpp">WSAEventSelect (socket_number, wsa_event, FD_READ | FD_CLOSE)
</code></pre>
<p>und dann nimmste nen Thread:</p>
<pre><code class="language-cpp">unsigned __stdcall threadfunction (void *parameter)
{
//...
WSAEvent wsa_event = static_cast &lt;WSAEvent&gt; (parameter);
while (WAIT_TIMEOUT != WaitForSingleObject (wsa_event, INFINITE))
{
if (0 == recv (...))
 break; //disconnect
}
</code></pre>
<p>Mit Send machste es einfach so, dass du iwo nen string (oder besser nen std::deque &lt;char&gt;) hast und da das anfügst, was du senden willst und nen event setzt - dann übergibst du die beiden events in nem array dem thread und hast dort halt WaitForMultipleObject (events, INFINITE) - und guckst dann, welches event ausgelöst wurde - bei dem einen sendest du was, bei dem anderen guckst du, obs nen disconnect war (recv == 0) ansonsten empfängst du iwas und tust das halt in nen anderen container...</p>
<p>der rest sollte von allein klar werden?!</p>
<p>bb</p>
</blockquote>
<p>gibt auch noch ne winapi-fkt glaub ich...</p>
<p>MSDN schrieb:</p>
<blockquote>
<p><code>select function [WinSock]</code></p>
<p>int select(<br />
int nfds,<br />
fd_set* readfds,<br />
fd_set* writefds,<br />
fd_set* exceptfds,<br />
const struct timeval* timeout<br />
);</p>
</blockquote>
<p>Ist eigtl für viele SOCKETs gedacht... Also wirste nen Array von Sockets machen müssen ==&gt; fd_set</p>
<p>MSDN schrieb:</p>
<blockquote>
<p><code>fd_set structure [Winsock]</code><br />
typedef struct fd_set { u_int fd_count; SOCKET fd_array[FD_SETSIZE];<br />
} fd_set;</p>
</blockquote>
<p>die unsauberste Methode wäre meine von vorhin:</p>
<blockquote>
<pre><code class="language-cpp">const int recv_buffer_length (X);
</code></pre>
</blockquote>
<p>für X nimmst du dann nen wert, dessen vielfaches niemals auf einmal empfangen wird... also am besten ne rel. große primzahl - aber sie sollte halt auch nicht soo grß sein, dass du jedes ma mehrere mb speicher anforderst und dann nich ma en kilobyte brauchst ^^</p>
<p>deine fkt noch mal:</p>
<pre><code class="language-cpp">std::string RecvAllEx (const SOCKET socket)
{
    std::string RecvBytes;
    char c;
    int result;
    for (;false;)
    {
        cout&lt;&lt;&quot;empfange:&quot;;
        result = recv (socket, &amp;c, 1, 0);
        if (result == SOCKET_ERROR)
            throw CreateSocketError();
        else if (result)
          {
             std::cout &lt;&lt; &quot;Zeichen: &quot; &lt;&lt; c &lt;&lt; std::endl;
             RecvBytes.push_back (c);
             std::cout &lt;&lt; &quot;RecvBytes: &quot; &lt;&lt; RecvBytes &lt;&lt; std::endl;
             continue;
          }
    }
    std::cout &lt;&lt; &quot;fertig... return:&quot; &lt;&lt; RecvBytes &lt;&lt; std::endl;
    return RecvBytes;
}
</code></pre>
<p>warum machst du es nicht wenigstens mal so, wie ich schreibe? Oo</p>
<p>bb - ich hoffe, du siehst noch durch ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1551810</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551810</guid><dc:creator><![CDATA[unskilled @logged out]]></dc:creator><pubDate>Tue, 22 Jul 2008 16:27:49 GMT</pubDate></item><item><title><![CDATA[Reply to (socket) problem bei empfangsfunktion on Tue, 22 Jul 2008 17:50:04 GMT]]></title><description><![CDATA[<blockquote>
<pre><code>for (;false;)
</code></pre>
</blockquote>
<p>rofl</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1551874</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551874</guid><dc:creator><![CDATA[rolf imo]]></dc:creator><pubDate>Tue, 22 Jul 2008 17:50:04 GMT</pubDate></item><item><title><![CDATA[Reply to (socket) problem bei empfangsfunktion on Wed, 23 Jul 2008 00:11:57 GMT]]></title><description><![CDATA[<p>hmm... wollte die schleife dann nich mehr ändern, weil ich am ende noch was gesehen hatte &gt;&lt;</p>
<p>so wärs vll besser/schöner/was auch immer...</p>
<pre><code class="language-cpp">std::string RecvAllEx (const SOCKET socket)
{
    std::string RecvBytes;
    char c;
    int result (recv (socket, &amp;c, 1, 0));
    while (result &gt; 0)
    {
        RecvBytes.push_back (c);
        result = recv (socket, &amp;c, 1, 0);
    }; //ich mag das semikolon hier ^^
    if (result == SOCKET_ERROR)
       throw CreateSocketError ();
    return RecvBytes;
}
</code></pre>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1552052</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1552052</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 23 Jul 2008 00:11:57 GMT</pubDate></item></channel></rss>