<?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[Datei wird nicht komplett geschrieben...]]></title><description><![CDATA[<p>Ich will ein Programm schreiben das Dateien von einem Server läd und lokal speichert, jedoch ist die erstellte Datei immer fehlerhaft und kann nicht ausgeführt werden, und sie hat nicht die volle Größe...</p>
<p>hier der Quellcode:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;string.h&gt;
#include &lt;windows.h&gt;
#include &lt;fstream&gt;

using namespace std;

int startWinsock();
unsigned int ConnectToServer( string SERVER, int PORT );

int main()
{
    string SERVER = &quot;gd.tuwien.ac.at&quot;;
    int PORT = 80;
    char buffer[8];

    SOCKET s = ConnectToServer( SERVER, PORT );
    if ( s == 0 )
    {
        cout &lt;&lt; &quot;CONNECTION FAILED...&quot; &lt;&lt; endl;
    }

    string result;

    string header = &quot;GET /gnu/mingw/MinGW-4.0.1.exe HTTP/1.1\r\nHost: gd.tuwien.ac.at\r\n\r\n&quot;;
    send( s, header.c_str(), header.length(), 0 );
    while ( int bytes = recv(s, buffer, sizeof(buffer), 0) )
    {
        //buffer[bytes] = '\0';
        //cout &lt;&lt; buffer &lt;&lt;endl;
        result += buffer;
    }

    string::size_type i;
    if ( (i = result.find(&quot;\r\n\r\n&quot;)) != string::npos )
    {
        result.erase( 0, i+4 );
    }

    fstream fStream;
    fStream.open( &quot;test.exe&quot;, fstream::out | fstream::binary );
    fStream.write( result.c_str(), result.size() );
    fStream.close();

    return 0;
}

int startWinsock()
{
    WSADATA wsa;
    return WSAStartup(MAKEWORD(2,0),&amp;wsa);
}

unsigned int ConnectToServer( string SERVER, int PORT )
{
    long rc=startWinsock();
    SOCKET s = socket(AF_INET,SOCK_STREAM,0);
    struct hostent *host = gethostbyname(SERVER.c_str());
    SOCKADDR_IN addr;

    memset(&amp;addr,0,sizeof(SOCKADDR_IN));
    addr.sin_family=AF_INET;
    addr.sin_port=htons(PORT);
    addr.sin_addr = *(struct in_addr*) host-&gt;h_addr;

    rc=connect(s,(SOCKADDR*)&amp;addr,sizeof(SOCKADDR));
    if (rc!=SOCKET_ERROR)
    {
        return s;
    }
    return 0;
}
</code></pre>
<p>was ist daran falsch ?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/229375/datei-wird-nicht-komplett-geschrieben</link><generator>RSS for Node</generator><lastBuildDate>Mon, 28 Sep 2026 00:45:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/229375.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 10 Dec 2008 21:12:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Datei wird nicht komplett geschrieben... on Wed, 10 Dec 2008 21:12:32 GMT]]></title><description><![CDATA[<p>Ich will ein Programm schreiben das Dateien von einem Server läd und lokal speichert, jedoch ist die erstellte Datei immer fehlerhaft und kann nicht ausgeführt werden, und sie hat nicht die volle Größe...</p>
<p>hier der Quellcode:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;string.h&gt;
#include &lt;windows.h&gt;
#include &lt;fstream&gt;

using namespace std;

int startWinsock();
unsigned int ConnectToServer( string SERVER, int PORT );

int main()
{
    string SERVER = &quot;gd.tuwien.ac.at&quot;;
    int PORT = 80;
    char buffer[8];

    SOCKET s = ConnectToServer( SERVER, PORT );
    if ( s == 0 )
    {
        cout &lt;&lt; &quot;CONNECTION FAILED...&quot; &lt;&lt; endl;
    }

    string result;

    string header = &quot;GET /gnu/mingw/MinGW-4.0.1.exe HTTP/1.1\r\nHost: gd.tuwien.ac.at\r\n\r\n&quot;;
    send( s, header.c_str(), header.length(), 0 );
    while ( int bytes = recv(s, buffer, sizeof(buffer), 0) )
    {
        //buffer[bytes] = '\0';
        //cout &lt;&lt; buffer &lt;&lt;endl;
        result += buffer;
    }

    string::size_type i;
    if ( (i = result.find(&quot;\r\n\r\n&quot;)) != string::npos )
    {
        result.erase( 0, i+4 );
    }

    fstream fStream;
    fStream.open( &quot;test.exe&quot;, fstream::out | fstream::binary );
    fStream.write( result.c_str(), result.size() );
    fStream.close();

    return 0;
}

int startWinsock()
{
    WSADATA wsa;
    return WSAStartup(MAKEWORD(2,0),&amp;wsa);
}

unsigned int ConnectToServer( string SERVER, int PORT )
{
    long rc=startWinsock();
    SOCKET s = socket(AF_INET,SOCK_STREAM,0);
    struct hostent *host = gethostbyname(SERVER.c_str());
    SOCKADDR_IN addr;

    memset(&amp;addr,0,sizeof(SOCKADDR_IN));
    addr.sin_family=AF_INET;
    addr.sin_port=htons(PORT);
    addr.sin_addr = *(struct in_addr*) host-&gt;h_addr;

    rc=connect(s,(SOCKADDR*)&amp;addr,sizeof(SOCKADDR));
    if (rc!=SOCKET_ERROR)
    {
        return s;
    }
    return 0;
}
</code></pre>
<p>was ist daran falsch ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628481</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628481</guid><dc:creator><![CDATA[Gast4567]]></dc:creator><pubDate>Wed, 10 Dec 2008 21:12:32 GMT</pubDate></item><item><title><![CDATA[Reply to Datei wird nicht komplett geschrieben... on Wed, 10 Dec 2008 21:29:13 GMT]]></title><description><![CDATA[<p>result += buffer; ist schonmal blödsinn</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628495</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628495</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 10 Dec 2008 21:29:13 GMT</pubDate></item><item><title><![CDATA[Reply to Datei wird nicht komplett geschrieben... on Wed, 10 Dec 2008 21:42:18 GMT]]></title><description><![CDATA[<p>was ist damit nicht in Ordnung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628506</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628506</guid><dc:creator><![CDATA[Gast4567]]></dc:creator><pubDate>Wed, 10 Dec 2008 21:42:18 GMT</pubDate></item><item><title><![CDATA[Reply to Datei wird nicht komplett geschrieben... on Wed, 10 Dec 2008 21:44:40 GMT]]></title><description><![CDATA[<p>Gast4567 schrieb:</p>
<blockquote>
<p>was ist damit nicht in Ordnung?</p>
</blockquote>
<p>Der Buffer ist nicht null-terminiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628508</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628508</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Wed, 10 Dec 2008 21:44:40 GMT</pubDate></item><item><title><![CDATA[Reply to Datei wird nicht komplett geschrieben... on Wed, 10 Dec 2008 21:46:23 GMT]]></title><description><![CDATA[<p>Gast4567 schrieb:</p>
<blockquote>
<p>was ist damit nicht in Ordnung?</p>
</blockquote>
<p>Ungültiges C++: #include &lt;string.h&gt;<br />
a) #include &lt;string&gt; (Für die Klasse std::string &amp; Co)<br />
b) #include &lt;cstring&gt; (Für die C-Bibliothek wie strcpy &amp; Co)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628509</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628509</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 10 Dec 2008 21:46:23 GMT</pubDate></item><item><title><![CDATA[Reply to Datei wird nicht komplett geschrieben... on Wed, 10 Dec 2008 21:51:45 GMT]]></title><description><![CDATA[<p>ok, wie muss das ganze dann am besten aussehen (das es funtktioniert) ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628512</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628512</guid><dc:creator><![CDATA[Gast4567]]></dc:creator><pubDate>Wed, 10 Dec 2008 21:51:45 GMT</pubDate></item><item><title><![CDATA[Reply to Datei wird nicht komplett geschrieben... on Wed, 10 Dec 2008 21:59:05 GMT]]></title><description><![CDATA[<p>Ich bin mir jetzt wirklich nicht sicher, ob die append memberfunktion nicht evtl. schon bei einem \0 schluss macht, selbst wenn man einen count angibt, daher empfehle ich nun aus unwissenheit folgendes <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>
<pre><code class="language-cpp">result.append( buffer, buffer + bytes );
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1628514</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628514</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 10 Dec 2008 21:59:05 GMT</pubDate></item><item><title><![CDATA[Reply to Datei wird nicht komplett geschrieben... on Wed, 10 Dec 2008 22:00:09 GMT]]></title><description><![CDATA[<p>Na wie ich das sehe könnte es sein das du eine Endloschleife hast.<br />
Endet das Programm auch?Was willst du denn machen die .exe runterladen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628515</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628515</guid><dc:creator><![CDATA[AAAAAAAAAAAAAAAAAAAAAAAAA]]></dc:creator><pubDate>Wed, 10 Dec 2008 22:00:09 GMT</pubDate></item><item><title><![CDATA[Reply to Datei wird nicht komplett geschrieben... on Wed, 10 Dec 2008 22:01:17 GMT]]></title><description><![CDATA[<p>War das jetzt ein Nulltext, um uns alle mit deinem Nickname zu beglücken?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628517</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628517</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 10 Dec 2008 22:01:17 GMT</pubDate></item><item><title><![CDATA[Reply to Datei wird nicht komplett geschrieben... on Wed, 10 Dec 2008 22:13:00 GMT]]></title><description><![CDATA[<p>ja das programm endet, ja ich will die datei herunterladen...</p>
<p>ich bekomm auch eine Datei erstellt nur fehlen da immer ~100-1000KB</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628522</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628522</guid><dc:creator><![CDATA[Gast4567]]></dc:creator><pubDate>Wed, 10 Dec 2008 22:13:00 GMT</pubDate></item><item><title><![CDATA[Reply to Datei wird nicht komplett geschrieben... on Wed, 10 Dec 2008 22:18:27 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/34233">@Decimad</a>: genau das ist es, jetzt funktioniert es, 1000 dank...</p>
<pre><code>result.append( buffer, buffer + bytes );
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1628526</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628526</guid><dc:creator><![CDATA[Gast4567]]></dc:creator><pubDate>Wed, 10 Dec 2008 22:18:27 GMT</pubDate></item><item><title><![CDATA[Reply to Datei wird nicht komplett geschrieben... on Wed, 10 Dec 2008 22:28:10 GMT]]></title><description><![CDATA[<p>Ich habe das gaze mal getestet bekomme ein 1,54 mb großes Exe file.<br />
Wäre das Korrekt?Prob nur das ding ist nich ausführbar.<br />
Mal sehn:)Wird schon;)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628533</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628533</guid><dc:creator><![CDATA[HostBB]]></dc:creator><pubDate>Wed, 10 Dec 2008 22:28:10 GMT</pubDate></item><item><title><![CDATA[Reply to Datei wird nicht komplett geschrieben... on Wed, 10 Dec 2008 22:57:42 GMT]]></title><description><![CDATA[<p>HostBB schrieb:</p>
<blockquote>
<p>Wäre das Korrekt?Prob nur das ding ist nich ausführbar.</p>
</blockquote>
<p>Was heisst &quot;nicht ausführbar&quot;?</p>
<p>Die Grösse erreicht man noch relativ schnell, wenn man die C++-Standardbibliothek nutzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628548</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628548</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 10 Dec 2008 22:57:42 GMT</pubDate></item><item><title><![CDATA[Reply to Datei wird nicht komplett geschrieben... on Wed, 10 Dec 2008 23:02:12 GMT]]></title><description><![CDATA[<p>Das er mir ne Fehlermeldung von Windows gewurfen wird... das die Datei zu groß sein... kann aber net sein wie du meintest.<br />
Liegt wohl daran das ... vllt nen wenig müll in dem File steht.<br />
Dank .append(buffer,buffer + byte) geht es jetzt.</p>
<p>Könnt ihr mir mal den Unterschied zwischen .append und += erklären<br />
beide führen ja einen append aus oder habe ich das falsch verstanden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628551</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628551</guid><dc:creator><![CDATA[HostBB]]></dc:creator><pubDate>Wed, 10 Dec 2008 23:02:12 GMT</pubDate></item><item><title><![CDATA[Reply to Datei wird nicht komplett geschrieben... on Wed, 10 Dec 2008 23:07:25 GMT]]></title><description><![CDATA[<p>Semantisch sollten die eigentlich gleich sein, wenn man einen String anhängt. Bei <code>append()</code> kannst du einfach noch weitere Argumente übergeben, was beim Operator natürlich nicht möglich ist.</p>
<p>Genaueres findest du unter <a href="http://www.cplusplus.com" rel="nofollow">www.cplusplus.com</a>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628554</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628554</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 10 Dec 2008 23:07:25 GMT</pubDate></item><item><title><![CDATA[Reply to Datei wird nicht komplett geschrieben... on Wed, 10 Dec 2008 23:12:40 GMT]]></title><description><![CDATA[<p>append ist ja tausendmal überladen. operator+=( const char* ) ist halt dasselbe wie append( const char* ). Beide hängen Nullterminierte Strings hintenan. Nun weiß die Funktion ja nicht, dass da ein \0 evtl. noch gar nicht das letzte Terminalzeichen ist und bricht halt ab. In Executables wird man aber recht häufig 0-Bytes anfinden, darum kopierst du mit operator+=(const char*) oftmals nicht alles aus dem buffer in den string.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628556</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628556</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 10 Dec 2008 23:12:40 GMT</pubDate></item><item><title><![CDATA[Reply to Datei wird nicht komplett geschrieben... on Wed, 10 Dec 2008 23:25:38 GMT]]></title><description><![CDATA[<p>Und da recv den Buffer nicht nullterminiert, und er vor recv auch nicht mit Nullen gefüllt wird, und auch nicht mit Hand terminiert wird, könnte es sogar sein dass zuviel geschrieben wird. Bzw. sogar dass das Programm einfach abstürzt.<br />
Oder violette Kürbisse auf der Wand wachsen lässt. <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/1628563</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628563</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 10 Dec 2008 23:25:38 GMT</pubDate></item></channel></rss>