<?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[binare datei mit strings über socket senden]]></title><description><![CDATA[<p>hallo, dieses beispiel kopiert eine binare datei per strings<br />
in eine andere:</p>
<pre><code>#include &lt;iostream&gt; 
#include &lt;string&gt; 
#include &lt;fstream&gt; 

using namespace std; 

int main() 
{ 

  ifstream in_file(&quot;c:\\lol.mp3&quot;, ios::in | ios::binary);
  ofstream out_file(&quot;c:\\lol2.mp3&quot;, ios::out | ios::binary); 
  string text; 
  while(!in_file.eof()) 
  { 
      getline(in_file, text);
      out_file &lt;&lt; text &lt;&lt; endl;  

  }
in_file.close();
out_file.close();

}
</code></pre>
<p>so nun wollte ich die strings mit</p>
<pre><code>int size = str.size(); 
send (socket, (const char*)&amp;size, sizeof(int), 0); 
send (socket, str.c_str(), size, 0);
</code></pre>
<p>über einen socket senden, und mit</p>
<pre><code>int size; 
char *str; 
recv (socket, (char*)&amp;size, sizeof(int), 0); 
str = new char[size+1]; 
recv (socket, str, size, 0); 
str[size] = 0;
</code></pre>
<p>wieder annehmen und wieder in eine datei schrieben. doch das hat<br />
nicht geklappt da die neue datei größer war als die alte und somit<br />
nicht abspielbar (mp3-datei).</p>
<p>ist es denn richtig den string so zu senden und so wieder anzunehmen<br />
oder soll ich etwas anders machen? danke schonmal für eure antworten!!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/76555/binare-datei-mit-strings-über-socket-senden</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Apr 2026 11:43:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/76555.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 12 Jun 2004 22:11:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to binare datei mit strings über socket senden on Sat, 12 Jun 2004 22:11:46 GMT]]></title><description><![CDATA[<p>hallo, dieses beispiel kopiert eine binare datei per strings<br />
in eine andere:</p>
<pre><code>#include &lt;iostream&gt; 
#include &lt;string&gt; 
#include &lt;fstream&gt; 

using namespace std; 

int main() 
{ 

  ifstream in_file(&quot;c:\\lol.mp3&quot;, ios::in | ios::binary);
  ofstream out_file(&quot;c:\\lol2.mp3&quot;, ios::out | ios::binary); 
  string text; 
  while(!in_file.eof()) 
  { 
      getline(in_file, text);
      out_file &lt;&lt; text &lt;&lt; endl;  

  }
in_file.close();
out_file.close();

}
</code></pre>
<p>so nun wollte ich die strings mit</p>
<pre><code>int size = str.size(); 
send (socket, (const char*)&amp;size, sizeof(int), 0); 
send (socket, str.c_str(), size, 0);
</code></pre>
<p>über einen socket senden, und mit</p>
<pre><code>int size; 
char *str; 
recv (socket, (char*)&amp;size, sizeof(int), 0); 
str = new char[size+1]; 
recv (socket, str, size, 0); 
str[size] = 0;
</code></pre>
<p>wieder annehmen und wieder in eine datei schrieben. doch das hat<br />
nicht geklappt da die neue datei größer war als die alte und somit<br />
nicht abspielbar (mp3-datei).</p>
<p>ist es denn richtig den string so zu senden und so wieder anzunehmen<br />
oder soll ich etwas anders machen? danke schonmal für eure antworten!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/538885</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/538885</guid><dc:creator><![CDATA[babelduo]]></dc:creator><pubDate>Sat, 12 Jun 2004 22:11:46 GMT</pubDate></item><item><title><![CDATA[Reply to binare datei mit strings über socket senden on Sun, 13 Jun 2004 01:27:24 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>der Standard kennt keine Sockets.</p>
<p>Welches OS , welchen Compiler verwendest Du ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/538929</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/538929</guid><dc:creator><![CDATA[Knuddlbaer]]></dc:creator><pubDate>Sun, 13 Jun 2004 01:27:24 GMT</pubDate></item><item><title><![CDATA[Reply to binare datei mit strings über socket senden on Sun, 13 Jun 2004 08:11:42 GMT]]></title><description><![CDATA[<p>recv liefert als rueckgabe die anzahl der gelsenen bytes.<br />
du schreibst immer den kompletten buffer weg (-&gt;size was<br />
die groesse deines buffers ist).</p>
<p>int bytes = recv(...)<br />
str[bytes]='\0'</p>
]]></description><link>https://www.c-plusplus.net/forum/post/538959</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/538959</guid><dc:creator><![CDATA[entelechie]]></dc:creator><pubDate>Sun, 13 Jun 2004 08:11:42 GMT</pubDate></item><item><title><![CDATA[Reply to binare datei mit strings über socket senden on Sun, 13 Jun 2004 08:32:29 GMT]]></title><description><![CDATA[<p>schon mal gedebugged und geschaut, ob stringgröße richtig uebertragen wird, etc?<br />
versuch mal</p>
<pre><code class="language-cpp">ifstream in_file(...);
in_file &gt;&gt; string;
</code></pre>
<p>dann haste sicher ganze file im string. ich bin mir dann immer noch unsicher, was der mit '\0' macht. sobald du das im string drinstehn hast, müsste der aufhören weiterzulesen. also wenn deine datei:</p>
<pre><code>4E FF 23 44 00 34 E3
</code></pre>
<p>ist, dann steht im string nur die ersten 4 zeichen (beim auslesen). versuchs mal hardcode mit manuell allozierten char array und einem read statt getline. (also read(dateigröße) =&gt; buffer</p>
]]></description><link>https://www.c-plusplus.net/forum/post/538968</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/538968</guid><dc:creator><![CDATA[Korbinian]]></dc:creator><pubDate>Sun, 13 Jun 2004 08:32:29 GMT</pubDate></item><item><title><![CDATA[Reply to binare datei mit strings über socket senden on Sun, 13 Jun 2004 11:00:53 GMT]]></title><description><![CDATA[<p>hmm also ich benutzer windows und im moment noch den borland c++ 5.0<br />
compiler.</p>
<p>ehrlich gesagt habe ichd as nicht richtig verstanden! programmiere auch noch<br />
nicht sehr lange! nehme ich denn mit</p>
<pre><code>int size; 
char *str; 
recv (socket, (char*)&amp;size, sizeof(int), 0); 
str = new char[size+1]; 
recv (socket, str, size, 0); 
str[size] = 0;
</code></pre>
<p>überhaupt einen string an?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/539069</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/539069</guid><dc:creator><![CDATA[babelduo]]></dc:creator><pubDate>Sun, 13 Jun 2004 11:00:53 GMT</pubDate></item><item><title><![CDATA[Reply to binare datei mit strings über socket senden on Sun, 13 Jun 2004 11:02:41 GMT]]></title><description><![CDATA[<p>du programmierst noch nicht lange, und arbeitest mit sockets?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/539073</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/539073</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Sun, 13 Jun 2004 11:02:41 GMT</pubDate></item><item><title><![CDATA[Reply to binare datei mit strings über socket senden on Sun, 13 Jun 2004 11:12:40 GMT]]></title><description><![CDATA[<p>du gehst im augenblick so vor: auf 2 happen sendest du 2 infos. naemlich beim erstenmal die laenge der zeichenkette, beim zweiten mal die zeichenkette selbst.<br />
versuch mal das ganze zu debuggen. entweder mit nem debugger, oder per &quot;printf-debug&quot; also</p>
<pre><code class="language-cpp">recv(...);
cout &lt;&lt; &quot;size: &quot; &lt;&lt; size &lt;&lt; endl;
recv(...);
cout &lt;&lt; &quot;string: &quot; &lt;&lt; buffer &lt;&lt; endl;
</code></pre>
<p>und kombinier das mal mit &quot;normalen&quot; strings statt dateien (zum testen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/539076</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/539076</guid><dc:creator><![CDATA[Korbinian]]></dc:creator><pubDate>Sun, 13 Jun 2004 11:12:40 GMT</pubDate></item><item><title><![CDATA[Reply to binare datei mit strings über socket senden on Sun, 13 Jun 2004 12:22:17 GMT]]></title><description><![CDATA[<p>sorry ich meinte das ich noch nicht lange mit sockets programmiere <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 ich weis wie man mit ints eine binare datei über einen socket sendet.<br />
und ich dachte das es mit strings genauso sei, das ich einfach den string<br />
rübersenden und wieder in eine datei schreiben müsste. aber was genau hat<br />
es mit diesem size und so auf sich?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/539137</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/539137</guid><dc:creator><![CDATA[babelduo]]></dc:creator><pubDate>Sun, 13 Jun 2004 12:22:17 GMT</pubDate></item><item><title><![CDATA[Reply to binare datei mit strings über socket senden on Sun, 13 Jun 2004 13:00:46 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile.php?mode=viewprofile&amp;u=5608" rel="nofollow">davie</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=15" rel="nofollow">C++</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=4" rel="nofollow">WinAPI</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic.php?t=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/539166</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/539166</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Sun, 13 Jun 2004 13:00:46 GMT</pubDate></item><item><title><![CDATA[Reply to binare datei mit strings über socket senden on Sun, 13 Jun 2004 13:11:42 GMT]]></title><description><![CDATA[<p>naja, du verschickst halt string.size() bytes. es ist aber eh nicht ratsam, so große pakete zu schnüren. splitte lieber die datei in einzelhaeppchen a 100 byte oder so auf. diese nullterminierung (buffer[bytes] = '\0') is nur wichtig, wenn dein string nicht nullterminiert wäre. was aber in dem fall wurscht ist. versuch doch mal deinen netzwerkcode mit normalen strings, ob das klappt, wenn ja, liegt das problem wo anders (eben z.b. mit binärer null im string -&gt; nicht weitergelsen).</p>
<pre><code>string a = &quot;hallo\n\0alles ab hier wird nicht mehr eingelesen&quot;;
a.c_str() muesste jetzt &quot;hallo\n&quot; sein
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/539179</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/539179</guid><dc:creator><![CDATA[Korbinian]]></dc:creator><pubDate>Sun, 13 Jun 2004 13:11:42 GMT</pubDate></item></channel></rss>