<?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[char* builder]]></title><description><![CDATA[<p>Hi, ich will übers Netzwerk ein char string verschicken...<br />
bisher hab ichs so gemacht:</p>
<pre><code class="language-cpp">struct SPackage
{
    char Buffer[1024];
    int BufferSize;
}Package;

send(sock, (char*)&amp;Package, sizeof(SPackage), 0);
</code></pre>
<p>Nun will ich aber folgendes machen, da ich iwie Probleme hab structuren über Netzwerk schnell zu verschicken und will nun ausprobieren obs daran evt liegt...</p>
<pre><code class="language-cpp">char Buffer[1024];

send(sock, Buffer, sizeof(Buffer), 0);
</code></pre>
<p>So in die ersten 1010 chars von Buffer sollen die Binärdaten rein... und<br />
dann aber 1015 in char* form die Größe des Buffers... aber ich steh momenten vor einem Rätsel wie ich ein char array so basteln kann... also ich hab dann praktisch ein int und der soll jenachdem wie lang er is ab 1015 rein ... habt ihr da ne idee wie ich sowas machen kann ?! Ich hab da grad iwie ein Brett vorm kopf</p>
<p>Gruß Chris</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/194317/char-builder</link><generator>RSS for Node</generator><lastBuildDate>Mon, 28 Sep 2026 10:24:27 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/194317.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 05 Oct 2007 09:00:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to char* builder on Fri, 05 Oct 2007 09:01:44 GMT]]></title><description><![CDATA[<p>Hi, ich will übers Netzwerk ein char string verschicken...<br />
bisher hab ichs so gemacht:</p>
<pre><code class="language-cpp">struct SPackage
{
    char Buffer[1024];
    int BufferSize;
}Package;

send(sock, (char*)&amp;Package, sizeof(SPackage), 0);
</code></pre>
<p>Nun will ich aber folgendes machen, da ich iwie Probleme hab structuren über Netzwerk schnell zu verschicken und will nun ausprobieren obs daran evt liegt...</p>
<pre><code class="language-cpp">char Buffer[1024];

send(sock, Buffer, sizeof(Buffer), 0);
</code></pre>
<p>So in die ersten 1010 chars von Buffer sollen die Binärdaten rein... und<br />
dann aber 1015 in char* form die Größe des Buffers... aber ich steh momenten vor einem Rätsel wie ich ein char array so basteln kann... also ich hab dann praktisch ein int und der soll jenachdem wie lang er is ab 1015 rein ... habt ihr da ne idee wie ich sowas machen kann ?! Ich hab da grad iwie ein Brett vorm kopf</p>
<p>Gruß Chris</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1378381</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1378381</guid><dc:creator><![CDATA[Foxx90]]></dc:creator><pubDate>Fri, 05 Oct 2007 09:01:44 GMT</pubDate></item><item><title><![CDATA[Reply to char* builder on Fri, 05 Oct 2007 09:10:38 GMT]]></title><description><![CDATA[<p>Mein Vorschlag - du packst die Größenangabe an den Anfang des struct's und überträgst dann 'sizeof(int)+Package.BufferSize' Bytes an Daten. (Beim Empfangen mußt du in zwei Stufen vorgehen - zuerst sizeof(int) Byte in BufferSize einlesen und anschließend Buffersize Byte in Buffer)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1378388</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1378388</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 05 Oct 2007 09:10:38 GMT</pubDate></item><item><title><![CDATA[Reply to char* builder on Fri, 05 Oct 2007 09:19:32 GMT]]></title><description><![CDATA[<p>@ CStoll ok danke das hat geklappt... aber iwie hab ich das Problem immer noch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
Die verdammte übertragung klappt nicht 100% ich schicke alle 25 Packete eine bestätigung vom Server und warte alle 25 beim CLienten auf eine Antwort... aber es klappt nicht ?! die DAtei ist 327 mb groß und es kommen immer unterschiedliche DAteien dabei heraus .. einmal nur 240 mb einmal 270 ... manchmal sogar 300.... woran kann das liegen ? sind etwa 1024 bytes in einer endlos schleife zuviele (25)?<br />
oder muss ich nach jedem packet auf eine resonanz warten ? das habe ich auch schon probiert... aber dann is es ziemlich langsam vorallem wenn ich das übers internet mache! wenn ich ein packet schicke und dann auf eine antwort warte... weil man ja im internet als normal bürger nen ziemlich langsamen upload hat.... also hast du ne idee woran das liegt?!?!<br />
und danke schonmal für deine idee!</p>
<p>Gruß Chris</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1378395</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1378395</guid><dc:creator><![CDATA[Foxx90]]></dc:creator><pubDate>Fri, 05 Oct 2007 09:19:32 GMT</pubDate></item><item><title><![CDATA[Reply to char* builder on Fri, 05 Oct 2007 09:24:58 GMT]]></title><description><![CDATA[<p>Kann sein, daß der drunterliegende Socket deine Datei in etwas handlichere Stücke zerlegt hat, um sie übers Netz zu senden - wertest du denn auf der Empfänger-Seite aus, ob und wieviel Daten angekommen sind? (wenn weniger als die angeforderte Menge angekommen ist, ist vermutlich noch ein Teil unterwegs)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1378400</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1378400</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 05 Oct 2007 09:24:58 GMT</pubDate></item><item><title><![CDATA[Reply to char* builder on Fri, 05 Oct 2007 09:25:28 GMT]]></title><description><![CDATA[<p>Benutzt Du beim Zusammenstellen oder Zerlegen der Pakete str*-Funktionen? strlen z.B. wäre tödlich, wegen der Nullterminierung. Beachte, dass binäre Daten das Nullbyte als gültiges Datum enthalten können.</p>
<p>Falls es das ist: Du musst den Rückgabewert von recv beachten und wenn der &gt; 0 ist diesen Wert als Länge der Daten benutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1378401</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1378401</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 05 Oct 2007 09:25:28 GMT</pubDate></item><item><title><![CDATA[Reply to char* builder on Fri, 05 Oct 2007 09:28:06 GMT]]></title><description><![CDATA[<p>Also wenn du Daten an einen Socket sendest oder Daten empfängst, garantiert die die Sende- bzw. Empfangsfunktion <em><strong>nicht</strong></em>, dass alle Daten gesendet oder empfangen wurden.</p>
<p>Du <strong>musst</strong> nach jedem Senden oder Empfangen prüfen, wieviele Daten übertragen wurden (Rückgabewert) und ob das wirklich alle Daten gewesen sind, die übertragen werden sollten.</p>
<p>Ist das nicht der Fall, so musst du erneut senden bzw. empfangen (EDIT: Den noch nicht gesendeten Teil der Daten natürlich, Empfang: dto.).</p>
<p>Grüße...</p>
<p>Heiko</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1378404</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1378404</guid><dc:creator><![CDATA[bwbg]]></dc:creator><pubDate>Fri, 05 Oct 2007 09:28:06 GMT</pubDate></item><item><title><![CDATA[Reply to char* builder on Fri, 05 Oct 2007 09:30:14 GMT]]></title><description><![CDATA[<p>ja strlen benutze ich nicht ... auch das kopieren wird mit memcpy gemacht <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="😉"
    /><br />
hmm das heißt falls es zu wenig daten sind MUSS ich ne anforderung für die packete machen, die sind vollständig angekommen sind...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1378409</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1378409</guid><dc:creator><![CDATA[Foxx90]]></dc:creator><pubDate>Fri, 05 Oct 2007 09:30:14 GMT</pubDate></item><item><title><![CDATA[Reply to char* builder on Fri, 05 Oct 2007 09:34:59 GMT]]></title><description><![CDATA[<p>Du kannst das Lesen und Schreiben z.B. mit einer Schleife lösen, um sicherzustellen dass alles gesendet wurde. Beim Lesen würde ich zuerst sizeof(int) lesen und dann in einer Schleife genau so viel. Sinngemäß:</p>
<pre><code class="language-cpp">int laenge;
if (recv(socket, &amp;laenge, sizeof(int)) != sizeof(int)) {
    // Problem
}

int gelesen = 0;
char* buffer = new char[laenge];
while (gelesen &lt; laenge) {
    int teilgelesen = recv(socket, buffer + gelesen, laenge - gelesen);
    if (teilgelesen &lt;= 0) {
        // bei 0 hat der Schreiber einfach zu gemacht ohne genug zu schreiben
        // bei &lt; 0 -&gt; Problem
    }
    gelesen += teilgelesen;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1378415</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1378415</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 05 Oct 2007 09:34:59 GMT</pubDate></item><item><title><![CDATA[Reply to char* builder on Fri, 05 Oct 2007 09:42:33 GMT]]></title><description><![CDATA[<p>ahhh DANKE! ok hinten dran noch ein delete[] und alles sollte klappen, gute idee mit der zeiger arithmetik einfach hochzählen lassen und dann emfpangen danke!<br />
Mal schauen obs klappt..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1378423</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1378423</guid><dc:creator><![CDATA[Foxx90]]></dc:creator><pubDate>Fri, 05 Oct 2007 09:42:33 GMT</pubDate></item><item><title><![CDATA[Reply to char* builder on Fri, 05 Oct 2007 10:07:11 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Mein Vorschlag - du packst die Größenangabe an den Anfang des struct's</p>
</blockquote>
<p>lieber cstoll,</p>
<p>ich habe respekt vor deinem umfangreichen wissen und finde es bewundernswert, wie du den noobs immer hilfreich zur seite stehst und auf so viele fragen gute antworten hast.<br />
aber dass du das genetiv-s immer apostrophierst, das geht mir echt tierisch auf die nüsse.</p>
<p><a href="http://www.deppenapostroph.de" rel="nofollow">http://www.deppenapostroph.de</a></p>
<p>nix für ungut, du bleibst trotzdem mein held.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1378451</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1378451</guid><dc:creator><![CDATA[einer muss es mal sagen]]></dc:creator><pubDate>Fri, 05 Oct 2007 10:07:11 GMT</pubDate></item><item><title><![CDATA[Reply to char* builder on Fri, 05 Oct 2007 10:37:50 GMT]]></title><description><![CDATA[<p>ok das hat nun endlich geklappt!!! vielen dank, das war hilfreich</p>
<p>Gruß Chris</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1378479</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1378479</guid><dc:creator><![CDATA[Foxx90]]></dc:creator><pubDate>Fri, 05 Oct 2007 10:37:50 GMT</pubDate></item><item><title><![CDATA[Reply to char* builder on Fri, 05 Oct 2007 10:45:36 GMT]]></title><description><![CDATA[<p>einer muss es mal sagen schrieb:</p>
<blockquote>
<p>aber dass du das genetiv-s immer apostrophierst, das geht mir echt tierisch auf die nüsse.</p>
<p><a href="http://www.deppenapostroph.de" rel="nofollow">http://www.deppenapostroph.de</a></p>
</blockquote>
<p>Mache ich doch gar nicht immer, sondern nur wenn es auf englisch-sprachliche Fachausdrücke prallt. Ist vielleicht die Macht der Gewohnheit, aber irgendwie sieht &quot;structs&quot; verwirrender aus als &quot;struct's&quot;.<br />
(zum Glück habe ich die Schulzeit hinter mir :D)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1378482</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1378482</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 05 Oct 2007 10:45:36 GMT</pubDate></item></channel></rss>