<?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[Probleme mit SendStream und ReceiveBuf]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ja es ist schon wieder das leidige Thema <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /><br />
Ich hab mir einige Beiträge und die Borland Hilfe durchgelesen und bin nun zu diesen Funktionen gekommen:</p>
<p>Zum Senden des Streams:</p>
<pre><code class="language-cpp">TFileStream* file = new TFileStream(DateiOeffnen-&gt;FileName, fmOpenRead);
DCSocket-&gt;Socket-&gt;SendStream(file);
delete file;
</code></pre>
<p>Zum Empfangen:</p>
<pre><code class="language-cpp">TFileStream* file = new TFileStream(DateiSpeichern-&gt;FileName, fmCreate);
Socket-&gt;ReceiveBuf(file,Socket-&gt;ReceiveLength());
delete file;
</code></pre>
<p>Ich erhalte jedoch immer irgendwelche Fehler wegen unberechtigten Speicherzugriffen etc. Naja das da was nicht richtig ist wusste ich auch schon vorher, nur was ist mein Problem <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
<p>Könnte mir da vielleicht jemand helfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/71095/probleme-mit-sendstream-und-receivebuf</link><generator>RSS for Node</generator><lastBuildDate>Sat, 04 Jul 2026 19:22:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/71095.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 14 Apr 2004 19:03:58 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Probleme mit SendStream und ReceiveBuf on Wed, 14 Apr 2004 19:03:58 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ja es ist schon wieder das leidige Thema <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /><br />
Ich hab mir einige Beiträge und die Borland Hilfe durchgelesen und bin nun zu diesen Funktionen gekommen:</p>
<p>Zum Senden des Streams:</p>
<pre><code class="language-cpp">TFileStream* file = new TFileStream(DateiOeffnen-&gt;FileName, fmOpenRead);
DCSocket-&gt;Socket-&gt;SendStream(file);
delete file;
</code></pre>
<p>Zum Empfangen:</p>
<pre><code class="language-cpp">TFileStream* file = new TFileStream(DateiSpeichern-&gt;FileName, fmCreate);
Socket-&gt;ReceiveBuf(file,Socket-&gt;ReceiveLength());
delete file;
</code></pre>
<p>Ich erhalte jedoch immer irgendwelche Fehler wegen unberechtigten Speicherzugriffen etc. Naja das da was nicht richtig ist wusste ich auch schon vorher, nur was ist mein Problem <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
<p>Könnte mir da vielleicht jemand helfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/501572</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/501572</guid><dc:creator><![CDATA[HolyCow]]></dc:creator><pubDate>Wed, 14 Apr 2004 19:03:58 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit SendStream und ReceiveBuf on Thu, 15 Apr 2004 09:53:15 GMT]]></title><description><![CDATA[<p>Wann erhälst du den Fehler? Bei ReceiveStream? Bei new TFileStream?<br />
Bitte ein bißchen genauer</p>
]]></description><link>https://www.c-plusplus.net/forum/post/501847</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/501847</guid><dc:creator><![CDATA[Burkhi]]></dc:creator><pubDate>Thu, 15 Apr 2004 09:53:15 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit SendStream und ReceiveBuf on Thu, 15 Apr 2004 09:59:21 GMT]]></title><description><![CDATA[<blockquote>
<pre><code class="language-cpp">Socket-&gt;ReceiveBuf(file,Socket-&gt;ReceiveLength());
</code></pre>
</blockquote>
<p>So geht das nicht, da die Variable file ein Zeiger auf ein Stream-Objekt und nicht auf einen Speicherbereich darstellt. Wenn du Daten in den Stream schreiben willst, mußt du sie umkopieren:</p>
<pre><code class="language-cpp">TFileStream* file = new TFileStream(DateiSpeichern-&gt;FileName, fmCreate);
char buf[1024];
int c;
do
{
  c = Socket-&gt;ReceiveBuf(buf, sizeof(buf));
  file-&gt;Write(buf,c)
}
while (c == sizeof(buf));
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/501851</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/501851</guid><dc:creator><![CDATA[Burkhi]]></dc:creator><pubDate>Thu, 15 Apr 2004 09:59:21 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit SendStream und ReceiveBuf on Thu, 15 Apr 2004 15:09:03 GMT]]></title><description><![CDATA[<p>Danke Burkhi für die Antwort.</p>
<p>Also die genaue Fehlermeldung heißt:<br />
&quot;Zugriffsverletzung bei Adresse 00000000. Lesen von Adresse 00000000.&quot;</p>
<p>Ich erhalte die Fehlermeldung, nachdem versucht wird, die ankommenden Daten zu empfangen. Es springt auf jeden Fall schonmal in die Funktion, soweit konnte ich es schon testen.</p>
<p>Hab deinen Code oben eingesetzt und daher müsste es ja funktionieren.<br />
Wenn nur <strong>file</strong> nur ein Zeiger ist, muss dann die Sendefunktion nicht auch anders programmiert werden?</p>
<p>Nochmal danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/502067</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/502067</guid><dc:creator><![CDATA[HolyCow]]></dc:creator><pubDate>Thu, 15 Apr 2004 15:09:03 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit SendStream und ReceiveBuf on Thu, 15 Apr 2004 15:17:22 GMT]]></title><description><![CDATA[<p>den fehler bekommst du, weil du file nicht mit new erstellt hast.</p>
<p>die sende funktion musst du nicht ändern, da sie extram zum senden von streams gemacht ist, du kannst jedoch auf ca die selbe art und weise die SendBufer mehtode benutzen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/502078</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/502078</guid><dc:creator><![CDATA[DreadlockFilbert]]></dc:creator><pubDate>Thu, 15 Apr 2004 15:17:22 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit SendStream und ReceiveBuf on Thu, 15 Apr 2004 15:23:04 GMT]]></title><description><![CDATA[<p>ABer file wurde doch mit new erstellt ... oder versteh ich da was falsch?</p>
<pre><code>TFileStream* file = new TFileStream(DateiSpeichern-&gt;FileName, fmCreate);
char buf[1024];
int c;
do
{
  c = Socket-&gt;ReceiveBuf(buf, sizeof(buf));
  file-&gt;Write(buf,c);
}
while (c == sizeof(buf));
delete file;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/502083</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/502083</guid><dc:creator><![CDATA[HolyCow]]></dc:creator><pubDate>Thu, 15 Apr 2004 15:23:04 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit SendStream und ReceiveBuf on Thu, 15 Apr 2004 15:41:45 GMT]]></title><description><![CDATA[<p>ich habs auch gerade versucht, ich bekomme den fehler auch, aber er deutet darauf hin, dass ein zeige nach NULL zeigt, wenn ich mich nicht irre, also irgend wo muss ein zeiger noch zugewiesen werden...</p>
<p>EDIT: Ich bekomme den fheler aber beim senden...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/502092</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/502092</guid><dc:creator><![CDATA[DreadlockFilbert]]></dc:creator><pubDate>Thu, 15 Apr 2004 15:41:45 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit SendStream und ReceiveBuf on Fri, 16 Apr 2004 07:08:55 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>warum pruefst du file nicht ab<br />
(zB if ( file )<br />
Ich glaube da kommt dein Fehler her</p>
<p>MfG<br />
Klaus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/502363</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/502363</guid><dc:creator><![CDATA[KlausB]]></dc:creator><pubDate>Fri, 16 Apr 2004 07:08:55 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit SendStream und ReceiveBuf on Fri, 16 Apr 2004 08:47:29 GMT]]></title><description><![CDATA[<p>Wenn file den Wert 0 enthält, so könnte die Datei, die erstellt werdne soll, nicht erstellt werden.<br />
Darauf mußt du prüfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/502441</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/502441</guid><dc:creator><![CDATA[Burkhi]]></dc:creator><pubDate>Fri, 16 Apr 2004 08:47:29 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit SendStream und ReceiveBuf on Fri, 16 Apr 2004 09:36:41 GMT]]></title><description><![CDATA[<p>Burkhi schrieb:</p>
<blockquote>
<p>Wenn file den Wert 0 enthält...</p>
</blockquote>
<p>Normalerweise sollte der TFileStream-Konstruktor in diesem Fall aber eine Exception werfen.</p>
<p>@HolyCow: Aus Deinen Beiträgen geht nicht so richtig hervor, in welcher Zeile nun <em>genau</em> der Fehler auftritt - beim ReceiveBuf oder beim Write?</p>
<p>Der Code von Burkhi sieht gut aus und sollte erst einmal funktionieren.<br />
Allerdings würde ich die while-Bedingung so schreiben:</p>
<pre><code class="language-cpp">while (c != -1)
</code></pre>
<p>Wenn ich die Hilfe richtig verstanden habe, ist es nicht sicher, daß tatsächlich immer die angeforderte Anzahl an Bytes übertragen wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/502489</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/502489</guid><dc:creator><![CDATA[dschensky]]></dc:creator><pubDate>Fri, 16 Apr 2004 09:36:41 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit SendStream und ReceiveBuf on Fri, 16 Apr 2004 11:57:21 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/4390">@dschensky</a>:</p>
<pre><code>c = Socket-&gt;ReceiveBuf(buf, sizeof(buf));
</code></pre>
<p>Die Funktion liefert dir zurück, wieviele Zeichen tatsächlich empfangen wurden. Der zweite Parameter gibt die maximale Größe des Puffers an, der die Zeichen aufnehmen soll.<br />
Daraus folgt: 0 &lt;= c &lt;= sizeof(buf) <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 c == sizeof(Buf) ist, so können noch weitere Zeichen empfangen worden sein, deshalb die Schleife.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/502627</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/502627</guid><dc:creator><![CDATA[Burkhi]]></dc:creator><pubDate>Fri, 16 Apr 2004 11:57:21 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit SendStream und ReceiveBuf on Fri, 16 Apr 2004 13:31:17 GMT]]></title><description><![CDATA[<p>Burkhi schrieb:</p>
<blockquote>
<p>Daraus folgt: 0 &lt;= c &lt;= sizeof(buf) <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 c == sizeof(Buf) ist, so können noch weitere Zeichen empfangen worden sein, deshalb die Schleife.</p>
</blockquote>
<p>Hmmm, laut BCB-Hilfe ist gilt <strong>-1</strong> &lt;= c &lt;= sizeof(buf). Und -1 wird zurückgegeben, wenn keine Daten übertragen wurden. (Da würde mich so nebenbei mal interessieren, wo der Unterschied zwischen c=-1 und c=0 besteht.)<br />
Das Problem bei Deiner Schleife ist, daß sie prinzipiell beendet wird, wenn c ungleich, also speziell auch <strong>kleiner</strong> als sizeof(buf) ist. Wird also irgendwo in der Mitte der Übertragung ein Daten-Paket empfangen, dessen Länge kleiner als sizeof(buf) ist, bricht die Schleife ab, obwohl noch nicht alle Daten angekommen sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/502704</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/502704</guid><dc:creator><![CDATA[dschensky]]></dc:creator><pubDate>Fri, 16 Apr 2004 13:31:17 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit SendStream und ReceiveBuf on Fri, 16 Apr 2004 14:50:06 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe jetzt etwas weitergearbeitet und die Sendefunktion ist soweit nun komplett richtig .. glaub ich wenigstens.<br />
Diese Funktion sendet mir die komplette Datei, hatte Testhalber einen Zähler drin der die Datenpackete zählte, nur das Empfangen macht noch Probleme.</p>
<pre><code class="language-cpp">//Anlegen des Streams ...
TFileStream* file = new TFileStream(DateiOeffnen-&gt;FileName, fmOpenRead);
char buf[1024]; //Buffer
int c,b;        //Testvariabeln

//Solange senden bis Buffer nichtmehr voll geschriben wird,
//also Datei zu ende ist
do
{
  //Auslesen der zu sendenden Informationen
  b = file-&gt;Read(buf,sizeof(buf));

  //Senden des Buffers
  c = DCSocket-&gt;Socket-&gt;SendBuf(buf,sizeof(buf));

  //Falls nicht gesendet werden konnte, also interner Speicher voll war,
  //solange warten, bis gesendet werden kann
  while(c == -1)
  {
     Delay(10);
     c = DCSocket-&gt;Socket-&gt;SendBuf(buf,sizeof(buf));
  }
}
while(b == sizeof(buf));
</code></pre>
<p>Hatte ihn mal soweit, dass die ersten 61 gesendeten Datenpackete auch ordnungsgemäß empfangen wurden (bei Bildern konnte ich dann z.B. schon einen kleinen Teil erkennen), nach diesen Packeten sprang er jedoch aus der Funktion und nach einigen Sekunden wieder zurück und ich konnte die Datei nicht mehr öffnen und erhielt einen Fehler wie &quot;Kann Datei nicht anlegen&quot;.<br />
Hatte alles mögliche versucht, z.B. die Datei mit FileCreate oder mit Fstream anzulegen oder was weiß ich was mir noch so alles eingefallen ist.<br />
Naja langsamm bin ich hier am verzweifeln <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="😞"
    /></p>
<p>Nun ja, die Empfangfunktion sieht nun so aus. Fast wie am Anfang, da ich sie eben einfach mal versucht hab von Beginn an neu zu programmieren, hilf manchmal bei mir.</p>
<pre><code class="language-cpp">TFileStream* file = new TFileStream(DateiSpeichern-&gt;FileName, fmCreate);
char buf[1024];
int c;
do
{
  c = Socket-&gt;ReceiveBuf(buf, sizeof(buf));
  if(c != -1)
    file-&gt;WriteBuffer(buf,sizeof(buf));
    Hauptfenster-&gt;Mhauptfenster-&gt;Lines-&gt;Add(&quot;-----&gt; &quot; + IntToStr(c));
}
while(c != -1);
delete file;
</code></pre>
<p>Ich erhalte jetzt in meiner Testausgabe seltsammerweise sehr oft eine &quot;-1&quot;, das dürfte aber wegen der If-Anweisung gar nicht sein.<br />
Nun ja, werde morgen nochmal was dran arbeiten, geh jetzt erstmal was grillen, sonst werd ich noch verrückt <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/502769</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/502769</guid><dc:creator><![CDATA[HolyCow]]></dc:creator><pubDate>Fri, 16 Apr 2004 14:50:06 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit SendStream und ReceiveBuf on Fri, 16 Apr 2004 20:46:31 GMT]]></title><description><![CDATA[<p>Ich bins nochmal ..</p>
<p>So einfach kann es sein, funktioniert jetzt bei mir, endlich <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>
<p>Also, falls es wen interessiert, hier ist der Code nochmal:</p>
<p><strong>Senden:</strong></p>
<pre><code class="language-cpp">//Anlegen des Streams ...
TFileStream* file = new TFileStream(DateiOeffnen-&gt;FileName, fmOpenRead);
file-&gt;Seek(0,soFromBeginning);
char buf[1024]; //Buffer
int c,b;    //Testvariabeln

//Solange senden bis Buffer nichtmehr voll geschriben wird,
//also Datei zu ende ist
do
{
  //Auslesen der zu sendenden Informationen
  b = file-&gt;Read(buf,sizeof(buf));

  //Senden des Buffers
  c = DCSocket-&gt;Socket-&gt;SendBuf(buf,sizeof(buf));

  //Falls nicht gesendet werden konnt, also interner Speicher voll war,
  //solange warten, bis gesendet werden kann
  while(c == -1)
  {
    Delay(10);
    c = DCSocket-&gt;Socket-&gt;SendBuf(buf,sizeof(buf));
  }
}
while(b == sizeof(buf));

//Löschen des temporären Streams
delete file;
</code></pre>
<p><strong>Empfangen:</strong><br />
1.Ein Filestream wird in der Headerdatei deklariert.</p>
<pre><code class="language-cpp">class TDatei : public TForm
{
[...]
  public:
    TFileStream* file;
[...]
};
</code></pre>
<p>2.Der Stream wird irgendwo im Programm initialisiert</p>
<pre><code class="language-cpp">if(DateiSpeichern-&gt;Execute())
{
  DSSocket-&gt;Socket-&gt;Connections[0]-&gt;SendText(&quot;senden&quot;);
  file = new TFileStream(DateiSpeichern-&gt;FileName, fmCreate);
}
else
  DSSocket-&gt;Socket-&gt;Connections[0]-&gt;SendText(&quot;abbrechen&quot;);
</code></pre>
<p>3. Daten werden ohne Schleife in der Read-Funktion abgespeichert.</p>
<pre><code class="language-cpp">char buf[1024]; //Buffer
int c;  //Testvariabel

//Daten auslesen und Größe speichern
c = Socket-&gt;ReceiveBuf(buf,sizeof(buf));
//Falls Daten gelesen in Filestream speichern
if(c != -1)
  file-&gt;Write(buf,c);
</code></pre>
<p>Hmm hätte zwar nicht gedacht, dass es ohne Schleife funktioniert, aber irgendwie geht es bei mir. Jetzt müssen nur noch paar kleiner Abfragen rein und dann solls das gewesen sein.<br />
Naja wie auch immer, habs also doch noch geschafft.</p>
<p>Daher vielen Dank an die umfangreiche und freundliche Hilfe.<br />
ThX <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>Man sieht sich sicher noch, bin mit meinem Programm ja noch nicht fertig <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/502948</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/502948</guid><dc:creator><![CDATA[HolyCow]]></dc:creator><pubDate>Fri, 16 Apr 2004 20:46:31 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit SendStream und ReceiveBuf on Fri, 16 Apr 2004 21:06:46 GMT]]></title><description><![CDATA[<p>P.S.: Beim <strong>Senden</strong> müssen die Zeilen</p>
<p>c = DCSocket-&gt;Socket-&gt;SendBuf(buf,sizeof(buf));<br />
durch<br />
c = DCSocket-&gt;Socket-&gt;SendBuf(buf,b);</p>
<p>ersetzt werden.<br />
Bei kleineren Datenpacketen wird sonst der gesammte Buffer, obwohl er keine verwertbaren Daten beinhaltet, gesendet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/502954</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/502954</guid><dc:creator><![CDATA[HolyCow]]></dc:creator><pubDate>Fri, 16 Apr 2004 21:06:46 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit SendStream und ReceiveBuf on Sat, 02 Oct 2004 23:45:34 GMT]]></title><description><![CDATA[<p>Hi, kann mir jemand helfen?<br />
Hab HolyCows Code ausprobiert, nur bei mir funzt er nicht!<br />
Der Stream wird gesendet nur nicht richtig empfangen.<br />
Ich sende ein Bild (9.966 Byte), es kommen alle 9.966 Byte an, aber die sind irgend wie leer, denn das Bild kann nicht geladen werden (ins TImage)</p>
<p><strong>Senden:</strong></p>
<pre><code class="language-cpp">//Anlegen des Streams ...
TMemoryStream* file = new TMemoryStream;
file-&gt;LoadFromFile(&quot;1.bmp&quot;);
//Image1-&gt;Picture-&gt;Bitmap-&gt;SaveToStream(file);
Image2-&gt;Picture-&gt;Bitmap-&gt;LoadFromStream(file);

file-&gt;Seek(0,soFromBeginning);
char buf[1024]; //Buffer
int c,b;    //Testvariabeln

//Solange senden bis Buffer nichtmehr voll geschriben wird,
//also Datei zu ende ist
do
{
  //Auslesen der zu sendenden Informationen
  b = file-&gt;Read(buf,sizeof(buf));

  //Senden des Buffers
  c = ClientSocket1-&gt;Socket-&gt;SendBuf(buf,b);

  //Falls nicht gesendet werden konnt, also interner Speicher voll war,
  //solange warten, bis gesendet werden kann
  while(c == -1)
  {
    for(int i=0;i&lt;1000000;i++){}
    c = ClientSocket1-&gt;Socket-&gt;SendBuf(buf,sizeof(buf));
  }
}
while(b == sizeof(buf));

//Löschen des temporären Streams
delete file;
</code></pre>
<p><strong>Empfangen:</strong></p>
<pre><code class="language-cpp">char buf[1024]; //Buffer
int c;  //Testvariabel

//Daten auslesen und Größe speichern
c = Socket-&gt;ReceiveBuf(buf,sizeof(buf));
//Falls Daten gelesen in Filestream speichern
if(c != -1)
  Stream-&gt;Write(buf,c);
ListBox1-&gt;Items-&gt;Add(&quot;Recieve&quot;);
Caption=Stream-&gt;Size;
Image1-&gt;Picture-&gt;Bitmap-&gt;LoadFromStream(Stream);
</code></pre>
<p>Bitte um hilfe!!!!</p>
<p>Gruß FB4 <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/619671</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/619671</guid><dc:creator><![CDATA[FB4]]></dc:creator><pubDate>Sat, 02 Oct 2004 23:45:34 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit SendStream und ReceiveBuf on Sun, 03 Oct 2004 06:57:10 GMT]]></title><description><![CDATA[<p>HolyCow,</p>
<p>HolyCow schrieb:</p>
<blockquote>
<pre><code class="language-cpp">char buf[1024]; //Buffer
...
c = Socket-&gt;ReceiveBuf(buf,sizeof(buf));
...
</code></pre>
<p>Hmm hätte zwar nicht gedacht, dass es ohne Schleife funktioniert, aber irgendwie geht es bei mir.</p>
</blockquote>
<p>wenn ich das richtig sehe, &quot;funktioniert&quot; Deine Variante nur bei Dateien bis zu einer Größe von 1024 Byte. Ich fürchte, um die Schleife kommst Du nicht herum - so ungefähr (ungetestet):</p>
<pre><code class="language-cpp">int bytesReseived(0);
do
{
    bytesReseived = Socket-&gt;Receive(buffer, bufferSize);
    inStream-&gt;Write(buffer, bufferSize);
}
while (bytesReseived != -1)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/619696</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/619696</guid><dc:creator><![CDATA[dschensky]]></dc:creator><pubDate>Sun, 03 Oct 2004 06:57:10 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit SendStream und ReceiveBuf on Sun, 03 Oct 2004 10:49:13 GMT]]></title><description><![CDATA[<p>Habs jetzt doch hinbekommen!<br />
Trotzdem Danke dschensky!</p>
<p>Gruß FB4</p>
]]></description><link>https://www.c-plusplus.net/forum/post/619787</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/619787</guid><dc:creator><![CDATA[FB4]]></dc:creator><pubDate>Sun, 03 Oct 2004 10:49:13 GMT</pubDate></item></channel></rss>