<?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-Anwendung: char-array wird falsch übertragen]]></title><description><![CDATA[<p>Hallo,<br />
habe mich gerade angemeldet, da ich zum ersten mal so richtig C schreibe. Ich habe eine Client-Server-Anwendung programmiert auf Basis von Sockets.<br />
Dabei muss ich jeweils einen buffer (char-Array) und read() und write() zum übertragen nutzen.<br />
Allerdings stimmt nach der Übertragung der Inhalt des char-Arrays nicht mehr. Statt 'e' kommt dann beispielsweise 'e?_?' heraus! Was läuft da schief?</p>
<pre><code>// Client
// ...
char buffer[1];
buffer[0] = 'e';
r = write(socket, buffer, 1);
//...
</code></pre>
<pre><code>// Server
//...
char buffer[1];
r = read(socket, buffer, 1);
cout &lt;&lt; buffer;
//...
</code></pre>
<pre><code>// Konsole - Server
...
e??_?
Fehler: Anfrage ungültig.
</code></pre>
<p>Verzeiht mir wenn der Beitrag etwas unübersichtlich ist, bin neu <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/322985/socket-anwendung-char-array-wird-falsch-übertragen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 13:41:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/322985.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 14 Jan 2014 21:07:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Socket-Anwendung: char-array wird falsch übertragen on Tue, 14 Jan 2014 21:08:58 GMT]]></title><description><![CDATA[<p>Hallo,<br />
habe mich gerade angemeldet, da ich zum ersten mal so richtig C schreibe. Ich habe eine Client-Server-Anwendung programmiert auf Basis von Sockets.<br />
Dabei muss ich jeweils einen buffer (char-Array) und read() und write() zum übertragen nutzen.<br />
Allerdings stimmt nach der Übertragung der Inhalt des char-Arrays nicht mehr. Statt 'e' kommt dann beispielsweise 'e?_?' heraus! Was läuft da schief?</p>
<pre><code>// Client
// ...
char buffer[1];
buffer[0] = 'e';
r = write(socket, buffer, 1);
//...
</code></pre>
<pre><code>// Server
//...
char buffer[1];
r = read(socket, buffer, 1);
cout &lt;&lt; buffer;
//...
</code></pre>
<pre><code>// Konsole - Server
...
e??_?
Fehler: Anfrage ungültig.
</code></pre>
<p>Verzeiht mir wenn der Beitrag etwas unübersichtlich ist, bin neu <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/2377316</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2377316</guid><dc:creator><![CDATA[smirk_mirkin]]></dc:creator><pubDate>Tue, 14 Jan 2014 21:08:58 GMT</pubDate></item><item><title><![CDATA[Reply to Socket-Anwendung: char-array wird falsch übertragen on Tue, 14 Jan 2014 21:21:20 GMT]]></title><description><![CDATA[<pre><code>char buffer[1];
cout &lt;&lt; buffer;
</code></pre>
<p>In diesem Fall erwartet cout einen nullterminierten C-String. Den hast Du aber nicht, deshalb gibt cout beginnend bei buffer[0] solange Zeichen aus, bis es auf ein Nullbyte trifft.</p>
<p>Teste es so:</p>
<pre><code>// Client
// ...
char buffer[2];
buffer[0] = 'e';
buffer[1] = 0;
r = write(socket, buffer, 2);
//...
</code></pre>
<pre><code>// Server
//...
char buffer[2];
r = read(socket, buffer, 2);
cout &lt;&lt; buffer;
//...
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2377317</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2377317</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Tue, 14 Jan 2014 21:21:20 GMT</pubDate></item><item><title><![CDATA[Reply to Socket-Anwendung: char-array wird falsch übertragen on Tue, 14 Jan 2014 21:22:03 GMT]]></title><description><![CDATA[<p>Also cout ist C++ und nicht C. Du bist im falschen Unterforum!</p>
<p>Ansonsten:</p>
<pre><code>cout &lt;&lt; buffer[0];
</code></pre>
<p>Oder:</p>
<pre><code>cout.write(buffer, sizeof(buffer));
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2377318</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2377318</guid><dc:creator><![CDATA[ghjgjghj]]></dc:creator><pubDate>Tue, 14 Jan 2014 21:22:03 GMT</pubDate></item><item><title><![CDATA[Reply to Socket-Anwendung: char-array wird falsch übertragen on Tue, 14 Jan 2014 21:35:30 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/u109509" rel="nofollow">SeppJ</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/f10" rel="nofollow">C (C89, C99 und C11)</a> in das Forum <a href="http://www.c-plusplus.net/forum/f15" rel="nofollow">C++ (auch C++0x und C++11)</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/39405" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2377320</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2377320</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Tue, 14 Jan 2014 21:35:30 GMT</pubDate></item><item><title><![CDATA[Reply to Socket-Anwendung: char-array wird falsch übertragen on Tue, 14 Jan 2014 21:38:27 GMT]]></title><description><![CDATA[<p>Danke für deine Hilfe! Ich werde das korrigieren.<br />
Allerdings wird dieser eine char zur Bestimmung der serverseitigen Antwort verwendet. Dazu gibt es eine Switch-Case-Anweisung:</p>
<pre><code>// Ausschnitt Server Code
switch(buffer[0]) {
		case 'l': nachricht = &quot;Sonnig, 20C.&quot;;
		case 's': nachricht = &quot;Regnerisch, 18C.&quot;;
		case 'h': nachricht = &quot;Sonnig, 17C.&quot;;
		case 'e': nachricht = &quot;Bevoelkt, -10C.&quot;;
		case 'k': nachricht = &quot;Neblig, 15C.&quot;;
		default: nachricht = &quot;Fehler: Anfrage ungültig.&quot;;
}
</code></pre>
<p>Wenn ich nun z.B. 'e' an den Server sende, tritt trotzdem default ein. Der char ist also nicht mehr 'e'.<br />
Läuft übrigens alles auf dem selben PC.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2377322</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2377322</guid><dc:creator><![CDATA[smirk_mirkin]]></dc:creator><pubDate>Tue, 14 Jan 2014 21:38:27 GMT</pubDate></item><item><title><![CDATA[Reply to Socket-Anwendung: char-array wird falsch übertragen on Tue, 14 Jan 2014 21:41:11 GMT]]></title><description><![CDATA[<p>Da fehlen die breaks in den cases.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2377323</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2377323</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Tue, 14 Jan 2014 21:41:11 GMT</pubDate></item><item><title><![CDATA[Reply to Socket-Anwendung: char-array wird falsch übertragen on Tue, 14 Jan 2014 21:47:10 GMT]]></title><description><![CDATA[<p>Scheiße, ich bin so dumm <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
Danke vielmals!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2377324</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2377324</guid><dc:creator><![CDATA[smirk_mirkin]]></dc:creator><pubDate>Tue, 14 Jan 2014 21:47:10 GMT</pubDate></item><item><title><![CDATA[Reply to Socket-Anwendung: char-array wird falsch übertragen on Tue, 14 Jan 2014 21:47:51 GMT]]></title><description><![CDATA[<p>Jo, weil die breaks fehlen, bekommt Deine Nachricht nacheinander die Werte</p>
<p>Bewölkt ...<br />
Neblig ...<br />
Fehler ...</p>
<p>und mit dem letzten Inhalt wird dann die switch - Anweisung verlassen ...</p>
<p>also:</p>
<pre><code>switch(buffer[0]) {
        case 'l': nachricht = &quot;Sonnig, 20C.&quot;;
                  break;
        case 's': nachricht = &quot;Regnerisch, 18C.&quot;;
                  break;
        case 'h': nachricht = &quot;Sonnig, 17C.&quot;;
                  break;
                 // ... usw:
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2377325</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2377325</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Tue, 14 Jan 2014 21:47:51 GMT</pubDate></item></channel></rss>