<?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[recv hängt wenn alles von einem socket empfangen wurde statt 0 zurückzugeben!?]]></title><description><![CDATA[<p>Hi,<br />
also ich empfange mit folgender Funktion Daten über einen Socket(ich bin Server):</p>
<pre><code class="language-cpp">string NetSocket::receive_message(void)    
{
string received;
char buf[MAX_SIZE];
 do{

   rc = recv(s,buf,MAX_SIZE,0);

   if(rc==SOCKET_ERROR)
    {
     error_b = 1 ;
     error += &quot;Recv failed!\n&quot;;
    }
    buf[rc]='\0';
    received += buf;

}while(rc != 0 &amp;&amp; rc != SOCKET_ERROR );    

return received;    
}
</code></pre>
<p>Als Client benutze ich Firefox den ich so konfiguriert hab das er meinen Server<br />
als &quot;Proxy&quot; verwendet!<br />
rc ist,wenn die Anfrage von Firefox 522 Bytes ist auch 522,er macht also weiter<br />
mit der Schleife und trifft dann wieder auf recv!Und hier hängt er dann... Aber<br />
warum? Wenn alles ausgelesen ist sollte recv doch nicht hängen sondern einfach 0<br />
zurückgeben,oder?<br />
Der Server kommt erst dann aus der Schleife raus wenn der Client die Verbindung abbricht <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=":/"
      alt="😕"
    /></p>
<p>Schon mal Danke für jede Hilfe!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/151285/recv-hängt-wenn-alles-von-einem-socket-empfangen-wurde-statt-0-zurückzugeben</link><generator>RSS for Node</generator><lastBuildDate>Tue, 21 Jul 2026 22:02:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/151285.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 24 Jun 2006 16:43:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to recv hängt wenn alles von einem socket empfangen wurde statt 0 zurückzugeben!? on Sat, 24 Jun 2006 16:43:16 GMT]]></title><description><![CDATA[<p>Hi,<br />
also ich empfange mit folgender Funktion Daten über einen Socket(ich bin Server):</p>
<pre><code class="language-cpp">string NetSocket::receive_message(void)    
{
string received;
char buf[MAX_SIZE];
 do{

   rc = recv(s,buf,MAX_SIZE,0);

   if(rc==SOCKET_ERROR)
    {
     error_b = 1 ;
     error += &quot;Recv failed!\n&quot;;
    }
    buf[rc]='\0';
    received += buf;

}while(rc != 0 &amp;&amp; rc != SOCKET_ERROR );    

return received;    
}
</code></pre>
<p>Als Client benutze ich Firefox den ich so konfiguriert hab das er meinen Server<br />
als &quot;Proxy&quot; verwendet!<br />
rc ist,wenn die Anfrage von Firefox 522 Bytes ist auch 522,er macht also weiter<br />
mit der Schleife und trifft dann wieder auf recv!Und hier hängt er dann... Aber<br />
warum? Wenn alles ausgelesen ist sollte recv doch nicht hängen sondern einfach 0<br />
zurückgeben,oder?<br />
Der Server kommt erst dann aus der Schleife raus wenn der Client die Verbindung abbricht <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=":/"
      alt="😕"
    /></p>
<p>Schon mal Danke für jede Hilfe!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1084677</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1084677</guid><dc:creator><![CDATA[_recv_]]></dc:creator><pubDate>Sat, 24 Jun 2006 16:43:16 GMT</pubDate></item><item><title><![CDATA[Reply to recv hängt wenn alles von einem socket empfangen wurde statt 0 zurückzugeben!? on Sat, 24 Jun 2006 17:00:47 GMT]]></title><description><![CDATA[<p>Wenn Du Deinem Server sagst, dass er lesen soll und nicht via Events gehst, wartet eben der Server bis Daten kommen (oder die Verbindung beendet wird).<br />
Siehe WSAAsyncSelect<br />
oder diverse Beispiele auf Codeproject...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1084680</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1084680</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Sat, 24 Jun 2006 17:00:47 GMT</pubDate></item><item><title><![CDATA[Reply to recv hängt wenn alles von einem socket empfangen wurde statt 0 zurückzugeben!? on Sat, 24 Jun 2006 18:19:55 GMT]]></title><description><![CDATA[<p>Ok Danke!<br />
Da ich es portabel halten möchte hab ich es jetzt so gelöst:<br />
Ich schaue am Ende der Schleife ob das der erste Schleifen durchlauf ist und ob die<br />
empfangenen Daten kleiner sind als MAX_SIZE,ist das der Fall wird gebrakt.<br />
Erklärung:<br />
Wird recv das erste mal aufgerufen ist der Rückgabewert gleich der größe des<br />
Buffers WENN noch Daten zum lesen verhanden sind (soweit ich weiß<br />
jedenfalls,andernfalls belehrt mich <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="😉"
    /> )ansonsten breakt er eben!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1084730</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1084730</guid><dc:creator><![CDATA[_recv_]]></dc:creator><pubDate>Sat, 24 Jun 2006 18:19:55 GMT</pubDate></item><item><title><![CDATA[Reply to recv hängt wenn alles von einem socket empfangen wurde statt 0 zurückzugeben!? on Sat, 24 Jun 2006 18:53:05 GMT]]></title><description><![CDATA[<p>Vergesst was ich gesagt hab <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=":/"
      alt="😕"
    /><br />
Gibt es auch eine Portable Lösung ala</p>
<pre><code class="language-cpp">if(readable(socket))
 [...];
</code></pre>
<p>?</p>
<p>Danke im voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1084754</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1084754</guid><dc:creator><![CDATA[_recv_]]></dc:creator><pubDate>Sat, 24 Jun 2006 18:53:05 GMT</pubDate></item><item><title><![CDATA[Reply to recv hängt wenn alles von einem socket empfangen wurde statt 0 zurückzugeben!? on Sat, 24 Jun 2006 23:11:11 GMT]]></title><description><![CDATA[<p><em>recv</em> schrieb:</p>
<blockquote>
<p>Vergesst was ich gesagt hab <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=":/"
      alt="😕"
    /><br />
Gibt es auch eine Portable Lösung ala</p>
<pre><code class="language-cpp">if(readable(socket))
 [...];
</code></pre>
<p>?</p>
<p>Danke im voraus</p>
</blockquote>
<p>Jep, nennt sich select(). Schau mal hier:</p>
<p><a href="http://c-worker.ch/tuts/select.html" rel="nofollow">http://c-worker.ch/tuts/select.html</a></p>
<p>mfg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1084838</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1084838</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Sat, 24 Jun 2006 23:11:11 GMT</pubDate></item><item><title><![CDATA[Reply to recv hängt wenn alles von einem socket empfangen wurde statt 0 zurückzugeben!? on Sun, 25 Jun 2006 08:40:56 GMT]]></title><description><![CDATA[<p>Ok Danke <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/1084911</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1084911</guid><dc:creator><![CDATA[_select_]]></dc:creator><pubDate>Sun, 25 Jun 2006 08:40:56 GMT</pubDate></item></channel></rss>