<?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[Winsock (recv) Problem]]></title><description><![CDATA[<p>Hallo.<br />
Ich benutze WinSock2 um Daten per Server-Client Verbindung zu verschicken.<br />
Nun habe ich das Problem, dass ich mit send () das richtige sende, aber die Funktion recv () etwas empfängt und eine alte Nachricht hinten dran hängt.<br />
Beispiel:<br />
// server<br />
send (client, &quot;wie gehts?&quot;, sizeof (&quot;hallo&quot;), 0); // sendet wie gehts? an client</p>
<p>// client<br />
char buffer[1024];<br />
recv (server, buffer, sizeof (buffer), 0); // empfängt daten<br />
cout &lt;&lt; buffer &lt;&lt; &quot;\n&quot;;</p>
<p>Das klappt auch soweit ganz gut. Nur wenn ich nach dem &quot;wie gehts?&quot; senden noch ein &quot;hallo&quot; sende, kommt der letzt Teil der alten Nachricht hinten dran (also &quot;halloehts?&quot;. Dazu kommen am Ende die kryptischen Zeichen, die immer zufällig sind.<br />
Wieso speichert das Programm die alten Nachrichten oder liegt das an dem Socket?<br />
Ich benutze Windows Vista und Dev-C++ (das dürfte eigtl nichts zur Sache tun).<br />
Vielen Dank im Voraus.</p>
<p>edit:<br />
send (client, &quot;wie gehts?&quot;, strlen (&quot;wie gehts?&quot;), 0); // sendet wie gehts? an client</p>
<p>// client<br />
char buffer[1024];<br />
recv (server, buffer, sizeof (buffer), 0); // empfängt daten<br />
cout &lt;&lt; buffer &lt;&lt; &quot;\n&quot;;</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/259226/winsock-recv-problem</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 22:19:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/259226.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 20 Jan 2010 16:57:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Winsock (recv) Problem on Fri, 22 Jan 2010 07:10:34 GMT]]></title><description><![CDATA[<p>Hallo.<br />
Ich benutze WinSock2 um Daten per Server-Client Verbindung zu verschicken.<br />
Nun habe ich das Problem, dass ich mit send () das richtige sende, aber die Funktion recv () etwas empfängt und eine alte Nachricht hinten dran hängt.<br />
Beispiel:<br />
// server<br />
send (client, &quot;wie gehts?&quot;, sizeof (&quot;hallo&quot;), 0); // sendet wie gehts? an client</p>
<p>// client<br />
char buffer[1024];<br />
recv (server, buffer, sizeof (buffer), 0); // empfängt daten<br />
cout &lt;&lt; buffer &lt;&lt; &quot;\n&quot;;</p>
<p>Das klappt auch soweit ganz gut. Nur wenn ich nach dem &quot;wie gehts?&quot; senden noch ein &quot;hallo&quot; sende, kommt der letzt Teil der alten Nachricht hinten dran (also &quot;halloehts?&quot;. Dazu kommen am Ende die kryptischen Zeichen, die immer zufällig sind.<br />
Wieso speichert das Programm die alten Nachrichten oder liegt das an dem Socket?<br />
Ich benutze Windows Vista und Dev-C++ (das dürfte eigtl nichts zur Sache tun).<br />
Vielen Dank im Voraus.</p>
<p>edit:<br />
send (client, &quot;wie gehts?&quot;, strlen (&quot;wie gehts?&quot;), 0); // sendet wie gehts? an client</p>
<p>// client<br />
char buffer[1024];<br />
recv (server, buffer, sizeof (buffer), 0); // empfängt daten<br />
cout &lt;&lt; buffer &lt;&lt; &quot;\n&quot;;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1842119</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1842119</guid><dc:creator><![CDATA[DerCoder]]></dc:creator><pubDate>Fri, 22 Jan 2010 07:10:34 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock (recv) Problem on Wed, 20 Jan 2010 17:11:55 GMT]]></title><description><![CDATA[<p>1. falsches forum (WinAPI)</p>
<p>2. da es bei dir aber offensichtlich doch am C++ scheitert (und zwar richtig doll!), solltest du bevor, du weiter mit der WinAPI rumspielst, doch noch mal in den C++-Buch gucken...</p>
<p>3. Dev-C++ ist veraltet - besorg dir ne anständige IDE</p>
<p>Des weiteren haben sowohl send als auch recv nen Rückgabewert (die Anzahl der empfangenen/geschriebenen Zeichen).</p>
<p>Hier gibts auch schon ca. ne halbe Million Threads, wo das schon wer erklärt und gezeigt hat, wie man mit WinAPI ordentlich sendet und empfängt - ich bin aber gerad zu faul, einen zu suchen - vll findest du ja was^^</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1842126</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1842126</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 20 Jan 2010 17:11:55 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock (recv) Problem on Thu, 21 Jan 2010 12:05:28 GMT]]></title><description><![CDATA[<p>Vielen Dank für deine kritische, aber schnelle Rückmeldung.<br />
Ich habe das Problem mittlerweile gelöst.<br />
Wenn es an meinem C++ scheitert, kannst du mir bitte sagen, was du anders machst, bzw. wie ich mein Wissen verbessern kann.<br />
Ich arbeite daher mit Dev-C++, weil es schön simpel ist und man trotzdem Spaß am Programmieren hat.<br />
Bitte belehre mich, sollte ich irren.</p>
<p>Einen schönen Tag noch<br />
Mfg DerCoder</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1842562</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1842562</guid><dc:creator><![CDATA[DerCoder]]></dc:creator><pubDate>Thu, 21 Jan 2010 12:05:28 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock (recv) Problem on Thu, 21 Jan 2010 12:36:33 GMT]]></title><description><![CDATA[<p>zum Thema DevCpp schau dir in der FAQ vom Compiler/IDE-Forum mal den entsprechenden Eintrag an.</p>
<p>zum C++ (bzw. C,denn mehr ist das nicht was du bisher gezeigt hast):<br />
<strong>1)</strong> Der Typ von &quot;hallo&quot; ist ein char*, und sizeof() liefert daher die Größe eines Pointers, nicht die Länge des C-Strings den du da übergeben hast. Die Länge eines strings berechnest du</p>
<ul>
<li>In C mit strlen(&quot;hallo&quot;)</li>
<li>in C++ mit std::string(&quot;hallo&quot;).length();</li>
</ul>
<p>(Siehe auch entsprechende C++-Referenz und Tutorials für den Umgang mit String.<br />
<strong>2)</strong> Die Parameter von send() sind nicht einfach irgendwas. Der dritte Parameter sagt, wieviele byte gesendet werden sollen. sizeof(&quot;hallo&quot;) ist 4 (weils ein Pointer ist), strlen(&quot;hallo&quot;) 5 - beides ist viel kürzer als die Länge des strings den du tatsächlich übergeben hast. Zusammen sieht dein send()-Aufruf leider aus, als ob du ein wenig herumspielst ohne genau zu wissen was du tust, und sowas ist in der Programmierung tödlich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1842585</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1842585</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 21 Jan 2010 12:36:33 GMT</pubDate></item></channel></rss>