<?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[Struktur über den Socket]]></title><description><![CDATA[<p>Grüsse euch alle!</p>
<p>Also, ich schreibe ein chatt-server, der server schickt eine struktur über den socket, sie besteht aus einem int und einem zeiger auf char.</p>
<p>So sieht meine struktur aus:</p>
<pre><code>struct Message {
    char *_message;
    int messageType;
};
</code></pre>
<p>So schicke ich die struktur zum client:</p>
<pre><code>int rs = send(client[i],(const char*)&amp;myMessage,sizeof(myMessage),0);
</code></pre>
<p>Alles scheint zu klappen (rc != 0)</p>
<p>Hier der quelltext vom client der die message empfangen soll:</p>
<pre><code>char buf[256];

int rr = 0;
rr = recv(s,buf,sizeof(buf),0);
if( rr &lt;= 0 )
    cout&lt;&lt;&quot;recv error&quot;&lt;&lt;endl;

else {
    cout&lt;&lt;&quot;recv OK&quot;&lt;&lt;endl;
    buf[rr] = '\0';
    cout&lt;&lt;((Message*)&amp;buf)-&gt;_message;
}
</code></pre>
<p>...und die ausgabe am client</p>
<pre><code>connect OK
recv OK
</code></pre>
<p>ich werde sehr dankbar, wenn jemand eine antwort hat )</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/192719/struktur-über-den-socket</link><generator>RSS for Node</generator><lastBuildDate>Tue, 30 Jun 2026 10:10:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/192719.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 17 Sep 2007 21:42:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Struktur über den Socket on Mon, 17 Sep 2007 21:42:14 GMT]]></title><description><![CDATA[<p>Grüsse euch alle!</p>
<p>Also, ich schreibe ein chatt-server, der server schickt eine struktur über den socket, sie besteht aus einem int und einem zeiger auf char.</p>
<p>So sieht meine struktur aus:</p>
<pre><code>struct Message {
    char *_message;
    int messageType;
};
</code></pre>
<p>So schicke ich die struktur zum client:</p>
<pre><code>int rs = send(client[i],(const char*)&amp;myMessage,sizeof(myMessage),0);
</code></pre>
<p>Alles scheint zu klappen (rc != 0)</p>
<p>Hier der quelltext vom client der die message empfangen soll:</p>
<pre><code>char buf[256];

int rr = 0;
rr = recv(s,buf,sizeof(buf),0);
if( rr &lt;= 0 )
    cout&lt;&lt;&quot;recv error&quot;&lt;&lt;endl;

else {
    cout&lt;&lt;&quot;recv OK&quot;&lt;&lt;endl;
    buf[rr] = '\0';
    cout&lt;&lt;((Message*)&amp;buf)-&gt;_message;
}
</code></pre>
<p>...und die ausgabe am client</p>
<pre><code>connect OK
recv OK
</code></pre>
<p>ich werde sehr dankbar, wenn jemand eine antwort hat )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1367346</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367346</guid><dc:creator><![CDATA[__intel]]></dc:creator><pubDate>Mon, 17 Sep 2007 21:42:14 GMT</pubDate></item><item><title><![CDATA[Reply to Struktur über den Socket on Mon, 17 Sep 2007 21:54:21 GMT]]></title><description><![CDATA[<p>vllt solltest du einfach den inhalt des strings und nicht dessen adresse verschicken.</p>
<p>die struct hält nur die adresse des strings, daher musst du das in teilen verschicken. also erst das int aus der struct und dann den inhalt des zeigers des char*.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1367349</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367349</guid><dc:creator><![CDATA[ghorst]]></dc:creator><pubDate>Mon, 17 Sep 2007 21:54:21 GMT</pubDate></item><item><title><![CDATA[Reply to Struktur über den Socket on Tue, 18 Sep 2007 09:50:13 GMT]]></title><description><![CDATA[<p>in einer struktur kann man aber auch keinen string verwenden, du solltest also über eine dynamisch &quot;struktur&quot; nachednken, also was weis ich ... int für befehlsty und char für die länge des folgenden text und anschliessend den text direkt senden... im empfang machste dann erstmal</p>
<pre><code class="language-cpp">MyIntCharStruct Head;
char buff[MAX_LEN]; // MAX_LEN sollte die maximale größe sein für die
// zeichenlänge (TextLen hab ichs genannt) die du in deiner struktur angibst

while( recv(So, Head, sizeof(Head), MSG_PEEK) != sizeof(Head)); 
// um sicherzugehen das ausreichend daten für den kopf da sind

recv(So, Head, sizeof(Head), NULL);
// Kopf einlesen

while( recv(So, buff, Head.TextLen, MSG_PEEK) != Head.TextLen); 
// wiederum sichergehen das ausreichend daten vorhanden sind

recv(So, buff, Head.TextLen, NULL);
// fertig ... naja die fehlerkontrolle auf recv = 0 
// und recv = SOCKET_ERROR musste dir schon selber überlegen :p
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1367567</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367567</guid><dc:creator><![CDATA[Ceos]]></dc:creator><pubDate>Tue, 18 Sep 2007 09:50:13 GMT</pubDate></item><item><title><![CDATA[Reply to Struktur über den Socket on Tue, 18 Sep 2007 12:28:18 GMT]]></title><description><![CDATA[<p>wie wärs damit</p>
<pre><code>struct Message {
    char *_message;
    int messagelen;
    int messageType;
};
</code></pre>
<p>pseudo_:</p>
<pre><code>int len = sizeof(int) + sizeof(int) + messagelen;
memcpy( buf, &amp;Message_t, len );
send( buf, len )
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1367695</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367695</guid><dc:creator><![CDATA[xyz123]]></dc:creator><pubDate>Tue, 18 Sep 2007 12:28:18 GMT</pubDate></item><item><title><![CDATA[Reply to Struktur über den Socket on Tue, 18 Sep 2007 12:33:26 GMT]]></title><description><![CDATA[<p>__intel schrieb:</p>
<blockquote>
<p>ich werde sehr dankbar, wenn jemand eine Antwort hat )</p>
</blockquote>
<p>Wir werden dankbar, wenn du erstmal eine Frage formulierst <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>
<p>Wenn du wissen willst, warum keine Message ausgegeben wird, dann siehe obige Posts. Wenn du was anderes wissen willst, dann frag nach, aber ohne Fragen gibts meist keine vernuenftigen Antworten...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1367700</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367700</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 18 Sep 2007 12:33:26 GMT</pubDate></item><item><title><![CDATA[Reply to Struktur über den Socket on Wed, 19 Sep 2007 11:58:30 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/14678">@Ceos</a>: MSG_PEEK sollte man nicht verwenden.</p>
<p><a href="http://tangentsoft.net/wskfaq/newbie.html#peeking" rel="nofollow">http://tangentsoft.net/wskfaq/newbie.html#peeking</a><br />
<a href="http://support.microsoft.com/?scid=kb%3Ben-us%3B140263&amp;x=8&amp;y=12" rel="nofollow">http://support.microsoft.com/?scid=kb%3Ben-us%3B140263&amp;x=8&amp;y=12</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1368409</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1368409</guid><dc:creator><![CDATA[...........]]></dc:creator><pubDate>Wed, 19 Sep 2007 11:58:30 GMT</pubDate></item><item><title><![CDATA[Reply to Struktur über den Socket on Wed, 19 Sep 2007 12:55:52 GMT]]></title><description><![CDATA[<p>hm ... gut zu wissen .... deswegen verwende ich winsock 2 ... tut mir leid das ich da von mirauf andere geschlossen habe, allerdings ist es datentechnisch genauso aufwendig erstmal alles dynamisch zwischenspeichern zu müssen .... ok bei dem hier ist es wenbiger ein problem, da legt man den peicher an, schreibt rein was man hat, mit maxlen = dem was man erwartet und anschliessend fürden fall das mal nicht alles da iss reduzierrt man einfach den zu erwartenden wert und schreibt dann einfach ab der position weiter wo man aufgehört hat .... ich hab ein etwas verzwickteres problem, weswegen ich nur schwer darauf verzichten kann .... by the way gilt das problem denn weiterhin auch für winsock 2 ?? kann mich zumindest bisher nicht über derartige vorfälle beklagen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1368485</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1368485</guid><dc:creator><![CDATA[Ceos]]></dc:creator><pubDate>Wed, 19 Sep 2007 12:55:52 GMT</pubDate></item><item><title><![CDATA[Reply to Struktur über den Socket on Wed, 19 Sep 2007 18:58:21 GMT]]></title><description><![CDATA[<p>Mach aus dem char* ein Char-Array mit fest definierter Länge und dann haust du das ganze Zeug mit reinterpret typecast-dingsda raus <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="🙂"
    /> Sollte klappen, knallt allerdings gewaltig wenn nicht das ankommt, was man erwartet <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/1368789</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1368789</guid><dc:creator><![CDATA[Cpp_Junky]]></dc:creator><pubDate>Wed, 19 Sep 2007 18:58:21 GMT</pubDate></item><item><title><![CDATA[Reply to Struktur über den Socket on Thu, 20 Sep 2007 09:05:59 GMT]]></title><description><![CDATA[<p>da er es einfach hält und nur n einfachen chat macht sollte es so gehen ansonsten kannst ja mal die 2 ansätze von mir und sovok ansehen unter<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-192748.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-192748.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1369026</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1369026</guid><dc:creator><![CDATA[Ceos]]></dc:creator><pubDate>Thu, 20 Sep 2007 09:05:59 GMT</pubDate></item><item><title><![CDATA[Reply to Struktur über den Socket on Wed, 10 Oct 2007 05:31:52 GMT]]></title><description><![CDATA[<p>Normalerweise kann er die Struktur doch auch serialisieren und<br />
anschließend verschicken, oder? Ist das nicht ein Anwendungsgebiet<br />
von Serialisierung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1381674</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1381674</guid><dc:creator><![CDATA[Basingstoke]]></dc:creator><pubDate>Wed, 10 Oct 2007 05:31:52 GMT</pubDate></item><item><title><![CDATA[Reply to Struktur über den Socket on Wed, 10 Oct 2007 05:58:35 GMT]]></title><description><![CDATA[<p>jo, und die vorgestellten lösungen machen nichts weiter, als die struktur zu serialisieren. wenn man es &quot;schöner&quot; machen will, schreibt man sich ne methode, die das objekt in nen string umbastelt, schickts dann durch die generische socket schicht, die nur mit simplen strings arbeitet und verwendet beim empfänger ne deserialize methode, die aus dem string wieder die entsprechende struktur bastelt.<br />
die lösung hier ist halt direkt auf das problem zugeschnitzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1381688</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1381688</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Wed, 10 Oct 2007 05:58:35 GMT</pubDate></item><item><title><![CDATA[Reply to Struktur über den Socket on Wed, 10 Oct 2007 06:04:03 GMT]]></title><description><![CDATA[<p>um jetzt nochmal auf serialisierung zurück zu kommen:<br />
ob ich nu nen Speicher-Dump- oder eine XML-Variante<br />
verwende, es alles serialisierung richtig?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1381695</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1381695</guid><dc:creator><![CDATA[Basingstoke]]></dc:creator><pubDate>Wed, 10 Oct 2007 06:04:03 GMT</pubDate></item><item><title><![CDATA[Reply to Struktur über den Socket on Wed, 10 Oct 2007 06:07:54 GMT]]></title><description><![CDATA[<p>jo. serialisierung bedeutet nichts weiter, als ein high level objekt flachzuklopfen. ob man aus dem ding nu nen string macht oder alle anteile in ein &quot;high level&quot; xml dokument klopft (SOAP sieht sowas u.u. vor), bleibt geschmackssache.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1381697</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1381697</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Wed, 10 Oct 2007 06:07:54 GMT</pubDate></item><item><title><![CDATA[Reply to Struktur über den Socket on Wed, 10 Oct 2007 06:08:21 GMT]]></title><description><![CDATA[<p>Ja, <a href="http://de.wikipedia.org/wiki/Serialisierung" rel="nofollow">Serialisierung</a> ist ein sehr allgemeines Konzept - das umfasst alle Möglichkeiten, dein Objekt in eine sequentielle Form zu quetschen.</p>
<p>(wichtig für die Anwendung ist nur, daß die Gegenseite weiß, nach welchem Prinzip serialisiert wurde)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1381698</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1381698</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 10 Oct 2007 06:08:21 GMT</pubDate></item><item><title><![CDATA[Reply to Struktur über den Socket on Wed, 10 Oct 2007 07:37:47 GMT]]></title><description><![CDATA[<p>Danke für die Info!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1381747</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1381747</guid><dc:creator><![CDATA[Basingstoke]]></dc:creator><pubDate>Wed, 10 Oct 2007 07:37:47 GMT</pubDate></item></channel></rss>