<?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[Problem mit send() &amp;amp; recv() [Winsock]]]></title><description><![CDATA[<p>Momentan arbeite ich an einen Server und Client,welche zu Komunikation ganz normal die Winsock benutzen. Die Programme arbeiten einzeln mit Threads um Nachrichten zu empfangen und zu versenden, was an sich auch alles ganz normal funktioniert aber sobald z.B der Server in kurzen Zeitzyklen eine Nachricht an den Client sendet, bekommt er statt alle beiden Nachrichten einzeln, alle beide zusammen als einzelne Nahricht. Ich konnte diese Problem etwas aufheben, wenn ich pro Nachricht,die versendet wird ein kleinen Sleep(5) reinpacke aber das ist im Endeffekt auch keine praktikable Lösung.</p>
<p>Kennt jemand vieleicht das Problem?</p>
<p>Eigentlich müsste doch die Nachricht nach einem beenden einer send-Funktion schon verschickt sein oder ist es nicht so ?</p>
<p>Achja: Ich benutze WinXP und einen DualCore Prozessor.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/212288/problem-mit-send-amp-recv-winsock</link><generator>RSS for Node</generator><lastBuildDate>Sun, 19 Apr 2026 02:03:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/212288.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 04 May 2008 11:08:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit send() &amp;amp; recv() [Winsock] on Sun, 04 May 2008 11:08:36 GMT]]></title><description><![CDATA[<p>Momentan arbeite ich an einen Server und Client,welche zu Komunikation ganz normal die Winsock benutzen. Die Programme arbeiten einzeln mit Threads um Nachrichten zu empfangen und zu versenden, was an sich auch alles ganz normal funktioniert aber sobald z.B der Server in kurzen Zeitzyklen eine Nachricht an den Client sendet, bekommt er statt alle beiden Nachrichten einzeln, alle beide zusammen als einzelne Nahricht. Ich konnte diese Problem etwas aufheben, wenn ich pro Nachricht,die versendet wird ein kleinen Sleep(5) reinpacke aber das ist im Endeffekt auch keine praktikable Lösung.</p>
<p>Kennt jemand vieleicht das Problem?</p>
<p>Eigentlich müsste doch die Nachricht nach einem beenden einer send-Funktion schon verschickt sein oder ist es nicht so ?</p>
<p>Achja: Ich benutze WinXP und einen DualCore Prozessor.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1502987</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1502987</guid><dc:creator><![CDATA[Skuldas]]></dc:creator><pubDate>Sun, 04 May 2008 11:08:36 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit send() &amp;amp; recv() [Winsock] on Sun, 04 May 2008 11:14:25 GMT]]></title><description><![CDATA[<p>Skuldas schrieb:</p>
<blockquote>
<p>Eigentlich müsste doch die Nachricht nach einem beenden einer send-Funktion schon verschickt sein oder ist es nicht so ?</p>
</blockquote>
<p>nö. send() packt den payload auf den netzwerk stack des betriebsystems, und kehrt zurück sobald dies geschehen ist. das betriebsystem legt dann quasi fest wann welche nachricht verschickt wird. grundsätzlich, wenn du kein schon bestehendes protokoll verwenden möchtest, musst du ein eigenes kreieren. die basis dabei beinhaltet eigentlich immer die größe des payloads mit zuversenden, ggf. noch eine art magic number, damit der client bestimmen kann, wann eine nachricht vollständig eingetroffen ist, und wann die nächste beginnt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1502991</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1502991</guid><dc:creator><![CDATA[sothis_]]></dc:creator><pubDate>Sun, 04 May 2008 11:14:25 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit send() &amp;amp; recv() [Winsock] on Sun, 04 May 2008 11:40:42 GMT]]></title><description><![CDATA[<p>Eigentlich ist das Verhalten dennoch merkwürdig, da ich ja selbst schon überprüft habe,wirklich nur die einzelne Nachricht versendet wird. Der Server sendet in kurzen abständen 2 Nachrichten den CLient und dieser empfängt nur eine Nachricht, wo beide nebeneinander sind.</p>
<p>Als Beispiel<br />
Statt: Nachricht(1)&quot;Hallo&quot; + Nachricht(2)&quot;Hallo2&quot; empfänt der Client nur &quot;HalloHallo2&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1503015</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1503015</guid><dc:creator><![CDATA[Skuldas]]></dc:creator><pubDate>Sun, 04 May 2008 11:40:42 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit send() &amp;amp; recv() [Winsock] on Sun, 04 May 2008 11:44:17 GMT]]></title><description><![CDATA[<p>also ohne code kann ich auch nur raten <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/1503018</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1503018</guid><dc:creator><![CDATA[sothis_]]></dc:creator><pubDate>Sun, 04 May 2008 11:44:17 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit send() &amp;amp; recv() [Winsock] on Sun, 04 May 2008 11:47:46 GMT]]></title><description><![CDATA[<p>das ist völlig normal. ein socket vom typ SOCK_STREAM arbeitet nicht mit nachrichten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1503020</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1503020</guid><dc:creator><![CDATA[ä]]></dc:creator><pubDate>Sun, 04 May 2008 11:47:46 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit send() &amp;amp; recv() [Winsock] on Sun, 04 May 2008 13:18:06 GMT]]></title><description><![CDATA[<p>Ich habe nochmal etwas drüber nachgedacht und kann es mir jetzt nur so erklären, das es bei der send()-Funktion sich um nur ein Puffer handelt. Und wenn die nachricht noch nicht gesendet und schon 2 send kommt, das dann die Nachricht einfach mitreingehangen wird.</p>
<p>Aber wenn es so ist, gibt es irgend eine Möglich zu ermitteln, wenn eine Nachricht vollständig übertragen wurde ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1503086</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1503086</guid><dc:creator><![CDATA[Skuldas]]></dc:creator><pubDate>Sun, 04 May 2008 13:18:06 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit send() &amp;amp; recv() [Winsock] on Sun, 04 May 2008 17:12:15 GMT]]></title><description><![CDATA[<p>Rofl.<br />
Du hast die API falsch verstanden.<br />
Das von dir beobachtete Verhalten ist kein Fehler sondern völlig Korrekt.</p>
<p>Schlimmer noch: es dürften sogar wenn du bloss eine &quot;Nachricht&quot; rausschickst 2 oder 3 oder nochmehr &quot;Teile&quot; empfangen werden.</p>
<p>Du kannst mit send() Daten wegschicken, und mit recv() empfangen. Allerdings heisst das nicht dass ein recv() immer 1:1 die Daten eines send() empfängt, sondern es wird einfach alles das zurückgegeben was bereits angekommen ist.</p>
<p>Das was du machen möchtest löst man im Allgemeinen so dass man zuerst die Länge der Nachricht schickt, und dann die Nachricht selbst. Dann kannst du auf der Empfänger-Seite zuerst die Länge lesen, und dann genau eine Nachricht.</p>
<p>Lies dir nochmal *sehr genau* die Dokumentation zur Socket API durch. Da sind noch einige Dinge die dir entgangen sein dürften.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1503229</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1503229</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sun, 04 May 2008 17:12:15 GMT</pubDate></item></channel></rss>