<?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[Socket empfängt nur 4 bytes]]></title><description><![CDATA[<p>Hallo Leute.<br />
Ich bin neu hier im Forum und ich habe folgendes Problem. Wenn ich in meinem Programm, in dem ich eine Klasse für die Socketfunktionen und Variablen habe, also von der Main versuche char arrays an die Klassenfunktionen zu übergeben, um in den Arrays zu Speichern, verringert sich aus irgendeinem Grund immer die Größe der Arrays. Hier mal die relevanten Code abschnitte und die dazugehörige Ausgabe:</p>
<pre><code class="language-cpp">[code]  //sendet die Daten zum Server
             void SocketKlasse::sendData(char buf[]) {
                                 int bytes;
                                 bytes = send(s, buf, strlen(buf), 0);
                                 cout &lt;&lt; &quot; buf ind sendData hat die Größe: &quot; &lt;&lt; sizeof(buf) &lt;&lt; endl;
                                 if (bytes == -1)
                                 {
                                 cout &lt;&lt; &quot;Es wurde nichts gesendet&quot;;
                                 }
                                 cout &lt;&lt; &quot;Es wurden&quot; &lt;&lt; bytes &lt;&lt; &quot;Bytes gesendet&quot; &lt;&lt; endl;
             }

             //empfängt Daten vom Server
             void SocketKLasse::recvData(char* buf) {
                        int bytesGet;
                        cout &lt;&lt; &quot; Buf hat die Größe: &quot; &lt;&lt; sizeof(buf) &lt;&lt; endl;
                        bytesGet = recv(s, buf, sizeof(buf) - 1, 0); //empfängt die Daten
                        buf[bytesGet] = '\0';
                        cout &lt;&lt; sizeof(buf) &lt;&lt; endl;
                        cout &lt;&lt; &quot;Bytes empfangen&quot; &lt;&lt; bytesGet &lt;&lt; endl;
                        }
};
int main(int numberofArgs, char* pszArgs[]) {

    char request[] = &quot;GET / HTTP/1.1\r\nHost: galad34.cwsurf.de\r\n\r\n&quot;;

    socket.sendData(request);

    char buf[10];
    cout &lt;&lt; &quot;In der main hat buf die größe: &quot; &lt;&lt; sizeof(buf) &lt;&lt; endl;
    socket.recvData(buf);

    cout &lt;&lt; buf &lt;&lt; endl;         [/code]
</code></pre>
<p>So und nun die dazugehörige Ausgabe:</p>
<pre><code>buf ind sendData hat die Gr÷▀e: 4
Es wurden43Bytes gesendet
In der main hat buf die gr÷▀e: 10
Buf hat die Gr÷▀e: 4
Bytes empfangen3
HTT
</code></pre>
<p>MFG Galad <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/topic/292138/socket-empfängt-nur-4-bytes</link><generator>RSS for Node</generator><lastBuildDate>Sat, 15 Aug 2026 13:34:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/292138.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 03 Sep 2011 16:02:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Socket empfängt nur 4 bytes on Sat, 03 Sep 2011 16:02:00 GMT]]></title><description><![CDATA[<p>Hallo Leute.<br />
Ich bin neu hier im Forum und ich habe folgendes Problem. Wenn ich in meinem Programm, in dem ich eine Klasse für die Socketfunktionen und Variablen habe, also von der Main versuche char arrays an die Klassenfunktionen zu übergeben, um in den Arrays zu Speichern, verringert sich aus irgendeinem Grund immer die Größe der Arrays. Hier mal die relevanten Code abschnitte und die dazugehörige Ausgabe:</p>
<pre><code class="language-cpp">[code]  //sendet die Daten zum Server
             void SocketKlasse::sendData(char buf[]) {
                                 int bytes;
                                 bytes = send(s, buf, strlen(buf), 0);
                                 cout &lt;&lt; &quot; buf ind sendData hat die Größe: &quot; &lt;&lt; sizeof(buf) &lt;&lt; endl;
                                 if (bytes == -1)
                                 {
                                 cout &lt;&lt; &quot;Es wurde nichts gesendet&quot;;
                                 }
                                 cout &lt;&lt; &quot;Es wurden&quot; &lt;&lt; bytes &lt;&lt; &quot;Bytes gesendet&quot; &lt;&lt; endl;
             }

             //empfängt Daten vom Server
             void SocketKLasse::recvData(char* buf) {
                        int bytesGet;
                        cout &lt;&lt; &quot; Buf hat die Größe: &quot; &lt;&lt; sizeof(buf) &lt;&lt; endl;
                        bytesGet = recv(s, buf, sizeof(buf) - 1, 0); //empfängt die Daten
                        buf[bytesGet] = '\0';
                        cout &lt;&lt; sizeof(buf) &lt;&lt; endl;
                        cout &lt;&lt; &quot;Bytes empfangen&quot; &lt;&lt; bytesGet &lt;&lt; endl;
                        }
};
int main(int numberofArgs, char* pszArgs[]) {

    char request[] = &quot;GET / HTTP/1.1\r\nHost: galad34.cwsurf.de\r\n\r\n&quot;;

    socket.sendData(request);

    char buf[10];
    cout &lt;&lt; &quot;In der main hat buf die größe: &quot; &lt;&lt; sizeof(buf) &lt;&lt; endl;
    socket.recvData(buf);

    cout &lt;&lt; buf &lt;&lt; endl;         [/code]
</code></pre>
<p>So und nun die dazugehörige Ausgabe:</p>
<pre><code>buf ind sendData hat die Gr÷▀e: 4
Es wurden43Bytes gesendet
In der main hat buf die gr÷▀e: 10
Buf hat die Gr÷▀e: 4
Bytes empfangen3
HTT
</code></pre>
<p>MFG Galad <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/2114392</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2114392</guid><dc:creator><![CDATA[Galad34]]></dc:creator><pubDate>Sat, 03 Sep 2011 16:02:00 GMT</pubDate></item><item><title><![CDATA[Reply to Socket empfängt nur 4 bytes on Sat, 03 Sep 2011 16:26:54 GMT]]></title><description><![CDATA[<p>Ist immer dasselbe - recv(..) muss in einer Schleife augerufen werden! recv(..) empfängt in einem Aufruf 1 bis maximal Buffer Grösse an Bytes! Man kann es nicht voraussagen wieviel.</p>
<p><strong>EDIT:</strong><br />
Zusätzlich kommt hier noch ein anderes Fehler zum tragen. siezof(char*) ist 4 - das hat nichts mit deiner korrekten Buffergrösse zu tun. Du musst bei diesem Aufruf die Buffer Grösse separat übergeben oder gleich std::vector&lt;char&gt; verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2114403</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2114403</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Sat, 03 Sep 2011 16:26:54 GMT</pubDate></item><item><title><![CDATA[Reply to Socket empfängt nur 4 bytes on Sat, 03 Sep 2011 16:32:43 GMT]]></title><description><![CDATA[<p>es hat auch funktioniert, als ich die funktion direkt in der main aufgerufen habe. wie würde ich das denn mit der schleife machen und klappt das bei dir dann?</p>
<p>EDIT: ich hatte deinen edit noch nciht gesehen. dieser ist aber korrekt und hat unser problem auch behoben. vielen danke:)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2114405</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2114405</guid><dc:creator><![CDATA[Galad34]]></dc:creator><pubDate>Sat, 03 Sep 2011 16:32:43 GMT</pubDate></item><item><title><![CDATA[Reply to Socket empfängt nur 4 bytes on Sat, 03 Sep 2011 16:52:54 GMT]]></title><description><![CDATA[<p>Galad34 schrieb:</p>
<blockquote>
<p>es hat auch funktioniert, als ich die funktion direkt in der main aufgerufen habe.</p>
</blockquote>
<p>Ja. sizeof kann bei lokal definierten Arrays verwendet werden. Nicht jedoch bei Pointern (ausser natürlich man will die Grösse des Pointers wissen).</p>
<p>Das Schleifenproblem hat sich bei Dir <strong>zufällig</strong> nicht bemerkbar gemacht.</p>
<p>Galad34 schrieb:</p>
<blockquote>
<p>wie würde ich das denn mit der schleife machen</p>
</blockquote>
<p>Du musst ein Protokoll haben - such mal nach Posts von mir bezüglich Sockets. Ich habe das hier schon so oft beschrieben...</p>
<p><strong>EDIT</strong><br />
Hier wäre z.B. einer - der erste Post von mir:<br />
<a href="http://www.c-plusplus.net/forum/291001" rel="nofollow">http://www.c-plusplus.net/forum/291001</a></p>
<p>Galad34 schrieb:</p>
<blockquote>
<p>und klappt das bei dir dann?</p>
</blockquote>
<p>Wann? Wenn ich alles bemängelte ausgebessert habe? Keine Ahnung, ich werde den Code auch nicht ausprobieren...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2114408</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2114408</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Sat, 03 Sep 2011 16:52:54 GMT</pubDate></item></channel></rss>