<?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[Frage zu recv()]]></title><description><![CDATA[<p>Hallo.</p>
<p>Ich hab ein Problem und zwar habe ich eine Server Anwendung geschrieben die Daten mit recv() von einem Clienten empfängt.</p>
<p>Und zwar so:<br />
rc=recv(connectedSocket,(char *)&amp;buf2,sizeof(buf2),0);</p>
<p>Nur leider weiss ich jetzt nicht wie ich die gespeicherten Daten auf dem Bildschirm ausgebe.</p>
<p>Kann mir vielleicht jmd dabei helfen?</p>
<p>Danke im Vorraus.</p>
<p>Mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/156336/frage-zu-recv</link><generator>RSS for Node</generator><lastBuildDate>Thu, 23 Jul 2026 04:40:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/156336.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 15 Aug 2006 22:56:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu recv() on Tue, 15 Aug 2006 22:57:36 GMT]]></title><description><![CDATA[<p>Hallo.</p>
<p>Ich hab ein Problem und zwar habe ich eine Server Anwendung geschrieben die Daten mit recv() von einem Clienten empfängt.</p>
<p>Und zwar so:<br />
rc=recv(connectedSocket,(char *)&amp;buf2,sizeof(buf2),0);</p>
<p>Nur leider weiss ich jetzt nicht wie ich die gespeicherten Daten auf dem Bildschirm ausgebe.</p>
<p>Kann mir vielleicht jmd dabei helfen?</p>
<p>Danke im Vorraus.</p>
<p>Mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1117927</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1117927</guid><dc:creator><![CDATA[int_main]]></dc:creator><pubDate>Tue, 15 Aug 2006 22:57:36 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu recv() on Tue, 15 Aug 2006 23:15:00 GMT]]></title><description><![CDATA[<p>Console ? WinAPI ? MFC ? MessageBox ?</p>
<p>mach so besser :</p>
<pre><code class="language-cpp">long rc;
char buffer[MAX_PATH];

rc = recv(socket,buffer,sizeof(buffer),0);
buf[rc]='\0';

//.. dann kannst du zb

MessageBox(0,buffer,&quot;Received Buffer&quot;,MB_OK);

//.. oder

cout&lt;&lt;buffer;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1117928</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1117928</guid><dc:creator><![CDATA[PhoeNix_FasT]]></dc:creator><pubDate>Tue, 15 Aug 2006 23:15:00 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu recv() on Tue, 15 Aug 2006 23:14:56 GMT]]></title><description><![CDATA[<p>Oh sorry, es geht um Konsole</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1117929</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1117929</guid><dc:creator><![CDATA[int_main]]></dc:creator><pubDate>Tue, 15 Aug 2006 23:14:56 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu recv() on Tue, 15 Aug 2006 23:16:05 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">cout&lt;&lt;buffer;

// oder

printf(&quot;Buffer: %s&quot;,buffer);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1117930</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1117930</guid><dc:creator><![CDATA[PhoeNix_FasT]]></dc:creator><pubDate>Tue, 15 Aug 2006 23:16:05 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu recv() on Tue, 15 Aug 2006 23:28:20 GMT]]></title><description><![CDATA[<p>Danke.<br />
Jetzt ergibt sich eine neue Frage.<br />
Leert recv() den Buffer nach dem Aufruf automatisch, also kann ich den selben Buffer dann auf ein neues recv() anwenden?<br />
Wenn nicht wie leere ich ihn?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1117931</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1117931</guid><dc:creator><![CDATA[int_main]]></dc:creator><pubDate>Tue, 15 Aug 2006 23:28:20 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu recv() on Wed, 16 Aug 2006 05:25:48 GMT]]></title><description><![CDATA[<p>Der Buffer leert sich automatisch. Beachte das Sockets nach einem Warteschlangenprinzip arbeiten. Wenn du lags hast, bzw. Datenstau und die andere Seite mehrere Sends gemacht hat, wirst du alles nahtlos in einem Recv() empfangen, insofern du den Empfang bytetechnisch nicht genau angibst.</p>
<p>Ich hatte da anfangs ziemliche Probleme mit. Im Prinzip musst du dir nur eine Klasse mit entsprechenden header schreiben. Dort sollte angegeben werden, wie viel Byte das aktuelle Packet groß ist, dann lässt sich alles prima parsen. <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/1117960</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1117960</guid><dc:creator><![CDATA[Perner]]></dc:creator><pubDate>Wed, 16 Aug 2006 05:25:48 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu recv() on Wed, 16 Aug 2006 06:16:52 GMT]]></title><description><![CDATA[<p>Ja das Problem is echt hart am Anfang <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>wenn du machst</p>
<pre><code class="language-cpp">long rc;
char buffer[MAX_PATH];

rc=recv(socket,buffer,sizeof(buffer),0);
</code></pre>
<p>Wird der alte Wert von buffer natuerlich geloescht.<br />
Is wie</p>
<pre><code class="language-cpp">char buffer[MAX_PATH];

strcpy(buffer,&quot;HI&quot;);
strcpy(buffer,&quot;Nochmal HI&quot;);
</code></pre>
<p>buffer is jetzt &quot;Nochmal HI&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1117980</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1117980</guid><dc:creator><![CDATA[PhoeNix_FasT]]></dc:creator><pubDate>Wed, 16 Aug 2006 06:16:52 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu recv() on Wed, 16 Aug 2006 06:35:43 GMT]]></title><description><![CDATA[<p>Ich glaube er meint den Buffer vom Socket. Es gibt da ja auch einen Buffer wo die Daten liegen.<br />
Ich habe schonmal davon gehört dass man bei irgendeiner Programmiersprache den Socketbuffer per hand löschen muss. Wenn man recv() aufruft, rutschen ja automatisch die neuen daten nach, so das man bei einem erneuten aufruf von recv() die nächsten daten erhällt, da sie automatisch weitergeschoben werden.<br />
Würde das nicht der fall sein, hätte man immer die selben Daten beim aufruf von recv().</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1117994</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1117994</guid><dc:creator><![CDATA[Perner]]></dc:creator><pubDate>Wed, 16 Aug 2006 06:35:43 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu recv() on Wed, 16 Aug 2006 12:01:38 GMT]]></title><description><![CDATA[<p>Bei recv aufpassen!!!</p>
<p>Es müssen nicht immer alle Daten übertragen werden. Es kann sein das man mehrere Recv Aufrufe braucht um alle Daten zu empfangen die von einem send Aufruf kommen.</p>
<p>Zur Ausgabe: Due bekommst einen ganz normalen Char Pointer von recv, denn musst du nur Nullterminieren und schon kannst du ihn an fast jede Winapi Funktion oder an Cout übergeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1118277</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1118277</guid><dc:creator><![CDATA[flammenvogel]]></dc:creator><pubDate>Wed, 16 Aug 2006 12:01:38 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu recv() on Wed, 16 Aug 2006 12:59:35 GMT]]></title><description><![CDATA[<pre><code>[cpp]

std::string getLine() {
  std::string returnValue;
   while (1) {
     char r;

     recv(s_, &amp;r, 1, 0);
     //hier kannst du noch einen switch über recv einbauen, um fehler festzustellen

     returnValue += r;
     //liest solange aus dem socket, bis ein zeilenumbruch erfolgt
     if (r == '\n')  return returnValue;
   }
}
[/cpp]
</code></pre>
<p>Der String den zu rückbekommst kannst du mit cout einfach auf der konsole ausgeben. Der Vorteil hierbei ist, das keine buffer overflow beim auslesen aus dem socket bekommst.()</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1118353</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1118353</guid><dc:creator><![CDATA[Daveron]]></dc:creator><pubDate>Wed, 16 Aug 2006 12:59:35 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu recv() on Wed, 16 Aug 2006 16:37:19 GMT]]></title><description><![CDATA[<p>Oder man macht es so wie Daveron <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>Aber ein switch macht zu Fehlerbehandlung IMHO nicht viel Sinn, da es nur den Fehler: recv(...) &lt;= 0 gibt. Wenn ein Fehler auftritt musst mit WSAGetLastError() nach der Fehlerursache suchen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1118562</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1118562</guid><dc:creator><![CDATA[flammenvogel]]></dc:creator><pubDate>Wed, 16 Aug 2006 16:37:19 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu recv() on Wed, 16 Aug 2006 20:49:31 GMT]]></title><description><![CDATA[<p>Vielen dank für die zahlreichen Antworten ich werde es sofort ausprobieren. <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/1118745</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1118745</guid><dc:creator><![CDATA[int_main]]></dc:creator><pubDate>Wed, 16 Aug 2006 20:49:31 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu recv() on Thu, 17 Aug 2006 08:59:57 GMT]]></title><description><![CDATA[<pre><code>[cpp]
switch(recv(s_, &amp;r, 1, 0)) {
       case 0: // nicht mehr verbunden;
         return &quot;&quot;;
       case -1:
          if (errno == EAGAIN) {
             return ret;
          } else {
            // nicht mehr verbunden;
           return &quot;&quot;;
         }
     }
[/cpp]
</code></pre>
<p>Wie wäre es mit sowas <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/1118966</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1118966</guid><dc:creator><![CDATA[Daveron]]></dc:creator><pubDate>Thu, 17 Aug 2006 08:59:57 GMT</pubDate></item></channel></rss>