<?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[Datenstrom kann nicht eingelesen werden (Netzwerk)]]></title><description><![CDATA[<p>Hi.</p>
<p>Folgendes Problem:</p>
<p>Ich habe ein Programm geschrieben, dass 2 Befehle an ein Endgerät sendet. Dieses schickt mir daraufhin Informationen, die ich über die Befehle angefordert habe.<br />
Leider klappt das nur bei einem der Befehle.<br />
Bei dem anderen empfange ich anschliessend von den Daten nur ein Zeichen, und zwar das erste (# (hex 23)). Der Rest des Datenstreams kommt, warum auch immer , einfach nicht an (Zumindest nicht, in meinem Programm).</p>
<p>Codeschnipsel:</p>
<pre><code>char ausgabe[1000];
s = socket(AF_INET,SOCK_STREAM,0);
...
setsockopt(s,SOL_SOCKET,SO_RCVTIMEO,(char*)&amp;RecvTimeout, sizeof(RecvTimeout));
...
while(..)
x=recv((SOCKET)s, ausgabe, 1000,0);

for()
printf(&quot;%c&quot;,ausgabe[])
...
</code></pre>
<p>Ich habe die Pakete, die bei mir ankommen, mal genauer Untersucht.<br />
Dort steht auch bei dem Fehlerfall die Information, die ich in meinm Programm sehen will...<br />
Die Informationen kommen also zumindest an meiner Rechner an :).</p>
<p>Kann es sein, dass bestimmte Stuerzeichen in dem Datenstrom, der über recv eingelesen wird, mein Programm oder die Funktion recv so beeinflussen, dass ausser einem '#'(hex 23) nichts mehr ankommt ?</p>
<p>ps; Beginn des Fehlerdatenstroms;<br />
23 00 00 00 67 0d 0a usw</p>
<p>Bin für jede Idee , Information, Frage.. etc danbkbar <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/159705/datenstrom-kann-nicht-eingelesen-werden-netzwerk</link><generator>RSS for Node</generator><lastBuildDate>Thu, 10 Sep 2026 23:06:37 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/159705.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 18 Sep 2006 10:03:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Datenstrom kann nicht eingelesen werden (Netzwerk) on Mon, 18 Sep 2006 10:03:36 GMT]]></title><description><![CDATA[<p>Hi.</p>
<p>Folgendes Problem:</p>
<p>Ich habe ein Programm geschrieben, dass 2 Befehle an ein Endgerät sendet. Dieses schickt mir daraufhin Informationen, die ich über die Befehle angefordert habe.<br />
Leider klappt das nur bei einem der Befehle.<br />
Bei dem anderen empfange ich anschliessend von den Daten nur ein Zeichen, und zwar das erste (# (hex 23)). Der Rest des Datenstreams kommt, warum auch immer , einfach nicht an (Zumindest nicht, in meinem Programm).</p>
<p>Codeschnipsel:</p>
<pre><code>char ausgabe[1000];
s = socket(AF_INET,SOCK_STREAM,0);
...
setsockopt(s,SOL_SOCKET,SO_RCVTIMEO,(char*)&amp;RecvTimeout, sizeof(RecvTimeout));
...
while(..)
x=recv((SOCKET)s, ausgabe, 1000,0);

for()
printf(&quot;%c&quot;,ausgabe[])
...
</code></pre>
<p>Ich habe die Pakete, die bei mir ankommen, mal genauer Untersucht.<br />
Dort steht auch bei dem Fehlerfall die Information, die ich in meinm Programm sehen will...<br />
Die Informationen kommen also zumindest an meiner Rechner an :).</p>
<p>Kann es sein, dass bestimmte Stuerzeichen in dem Datenstrom, der über recv eingelesen wird, mein Programm oder die Funktion recv so beeinflussen, dass ausser einem '#'(hex 23) nichts mehr ankommt ?</p>
<p>ps; Beginn des Fehlerdatenstroms;<br />
23 00 00 00 67 0d 0a usw</p>
<p>Bin für jede Idee , Information, Frage.. etc danbkbar <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/1139440</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1139440</guid><dc:creator><![CDATA[Martin82]]></dc:creator><pubDate>Mon, 18 Sep 2006 10:03:36 GMT</pubDate></item><item><title><![CDATA[Reply to Datenstrom kann nicht eingelesen werden (Netzwerk) on Mon, 18 Sep 2006 12:59:08 GMT]]></title><description><![CDATA[<p>Was gibt dir revc denn zurück? Und wie sieht der Dump deines Datenstroms aus (Hexadezimal)?</p>
<p>grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1139575</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1139575</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Mon, 18 Sep 2006 12:59:08 GMT</pubDate></item><item><title><![CDATA[Reply to Datenstrom kann nicht eingelesen werden (Netzwerk) on Wed, 20 Sep 2006 07:23:14 GMT]]></title><description><![CDATA[<p>&quot;Die Funktion recv() liefert als Rückgabewert die Größe des empfangenen Speicherbereichs oder -1 im Fehlerfall. Da der Rückgabewert nichts über die Grösse des tatsächlich gesendeten Pakets aussagt, muss dies vom Programm geregelt werden. Wenn die Pakete nicht immer gleicher Größe sind <strong>oder Endezeichen</strong> verwendet werden, wird man meist die Paketlänge in den ersten Bytes des ersten Paketes kodieren. Damit weiß der Empfänger, auf wieviel Byte er noch warten muss.&quot;</p>
<p>&quot;Endezeichen&quot; , daran könnte es eventuell liegen... nur was sind für recv Endezeichen ? <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="😉"
    /> gleich ma suchen...</p>
<p>Edit;<br />
Soooo.. hab mir das ein oder andere mal ausgeben lassen und den Fehler gefunden!</p>
<pre><code>for(int i=0;i&lt;=strlen(ausgabe);i++)
{
 if(((int)ausgabe[i]&gt;=33 &amp;&amp; (int)ausgabe[i]&lt;=126) ||(int)ausgabe[i]==10)
                                printf(&quot;%c&quot;,ausgabe[i]);
}
</code></pre>
<p>Wie so oft liegts an dem einfachsten Punkt.. ;).<br />
Hier liegts an der Abbruchbestimmung strlen(ausagbe).<br />
Denn genau in dem beschriebenem Fehlerfall sieht strlen am Anfang des &quot;Strings&quot; ein Endzeichen. Nur deshalb wird nicht mehr von dem String ausgegeben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> ...</p>
<p>Naja.. also wars doch kein größeres Problem.</p>
<p>Danke für die Hilfe.<br />
<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="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1140827</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1140827</guid><dc:creator><![CDATA[Martin82]]></dc:creator><pubDate>Wed, 20 Sep 2006 07:23:14 GMT</pubDate></item></channel></rss>