<?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[SOCKETS: Datei versenden über TCP]]></title><description><![CDATA[<p>Moin allerseits,<br />
ich möchte ein Programm schreiben mit dem man Dateien zwischen zwei Computern versenden kann. Dazu hab ich gelesen, dass das gut mit TCP geht und mir mal überlegt wie das gehen sollte:<br />
Wie ich eine TCP verbindung aufbaue zwischen client und server ist klar, aber ich verstehe nicht ganz wie ich eine datei so auslese(keine txt dateien, sondern *.exe *.dll dateien) dass ich das ausgelesene dann an den anderen computer schicken kann. Ist bestimmt gans simpel. Danke an alle für die HIlfe. Wenns geht bringt nen Codeschnipsel oder beispiel, dass sagt immer mehr aus als ewig lange texte <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="🙂"
    /> <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>PS: Sagt mal wer den moderatoren, dass die suchfunktion kaputt ist <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="🙂"
    /> :xmas1: :xmas2:</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/168223/sockets-datei-versenden-über-tcp</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 12:17:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/168223.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 19 Dec 2006 18:44:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to SOCKETS: Datei versenden über TCP on Tue, 19 Dec 2006 18:44:03 GMT]]></title><description><![CDATA[<p>Moin allerseits,<br />
ich möchte ein Programm schreiben mit dem man Dateien zwischen zwei Computern versenden kann. Dazu hab ich gelesen, dass das gut mit TCP geht und mir mal überlegt wie das gehen sollte:<br />
Wie ich eine TCP verbindung aufbaue zwischen client und server ist klar, aber ich verstehe nicht ganz wie ich eine datei so auslese(keine txt dateien, sondern *.exe *.dll dateien) dass ich das ausgelesene dann an den anderen computer schicken kann. Ist bestimmt gans simpel. Danke an alle für die HIlfe. Wenns geht bringt nen Codeschnipsel oder beispiel, dass sagt immer mehr aus als ewig lange texte <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="🙂"
    /> <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>PS: Sagt mal wer den moderatoren, dass die suchfunktion kaputt ist <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="🙂"
    /> :xmas1: :xmas2:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1195032</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1195032</guid><dc:creator><![CDATA[SOCKETS&#x2F;TCP]]></dc:creator><pubDate>Tue, 19 Dec 2006 18:44:03 GMT</pubDate></item><item><title><![CDATA[Reply to SOCKETS: Datei versenden über TCP on Tue, 19 Dec 2006 18:58:44 GMT]]></title><description><![CDATA[<p>Geht genauso wie mit Text-Dateien. Nur solltest du darauf achten, dass du die Dateien auch im Binär-Modus geöffnet hast und nicht im Text-Modus. Und du solltest natürlich nicht versuchen, die Inhalte der Datei direkt anzuzeigen <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1195042</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1195042</guid><dc:creator><![CDATA[Der Meister]]></dc:creator><pubDate>Tue, 19 Dec 2006 18:58:44 GMT</pubDate></item><item><title><![CDATA[Reply to SOCKETS: Datei versenden über TCP on Tue, 19 Dec 2006 23:59:46 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">FILE* f = fopen(path, &quot;rb&quot;);
//oder
std::ifstream f2(path, ios_base::in | ios_base::binary);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1195166</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1195166</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 19 Dec 2006 23:59:46 GMT</pubDate></item><item><title><![CDATA[Reply to SOCKETS: Datei versenden über TCP on Wed, 20 Dec 2006 15:10:42 GMT]]></title><description><![CDATA[<p>danke an alle für die antworten wie ich eine datei öffne ist mir auch klar <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="🙂"
    /> aber das versenden des textes nicht unbedingt:<br />
habe mir das mal so gedacht:</p>
<pre><code>FILE * pFile;
 char * buffer;

  pFile = fopen ( &quot;myfile.txt&quot; , &quot;rb&quot; );
  if (pFile==NULL) exit (1);

  fread (buffer,1,1000000,pFile);
  send(s,buffer,strln(buffer),0);

  // terminate
  fclose (pFile);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1195458</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1195458</guid><dc:creator><![CDATA[SOCKETS&#x2F;TCP]]></dc:creator><pubDate>Wed, 20 Dec 2006 15:10:42 GMT</pubDate></item><item><title><![CDATA[Reply to SOCKETS: Datei versenden über TCP on Wed, 20 Dec 2006 19:14:13 GMT]]></title><description><![CDATA[<p>Poste mal nen compilierbares und ausführbares Programm hier. Also wo der Socket erzeugt wird und connected, und bitte Client und Server Seite. Der Rest (das Datei übertragen) muss da ja noch nicht funktionieren wenn du das nicht hinbekommst. Ich befürchte nämlich du kannst nichtmal grundlegend C++, und in dem Fall wäre es etwas sehr mühsam dir hier weiterzuhelfen. Du hast z.B. nichtmal Speicher angefordert für deinen Buffer...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1195609</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1195609</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 20 Dec 2006 19:14:13 GMT</pubDate></item><item><title><![CDATA[Reply to SOCKETS: Datei versenden über TCP on Wed, 20 Dec 2006 20:09:07 GMT]]></title><description><![CDATA[<p>strlen kannste da nicht benutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1195645</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1195645</guid><dc:creator><![CDATA[44444]]></dc:creator><pubDate>Wed, 20 Dec 2006 20:09:07 GMT</pubDate></item><item><title><![CDATA[Reply to SOCKETS: Datei versenden über TCP on Wed, 20 Dec 2006 20:17:18 GMT]]></title><description><![CDATA[<p>Also so neu bin ich auch wieder nicht aber ich habe erst vor ein paar monaten angefangen das stimmt.</p>
<p>Also Server:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;stdlib.h&gt;
#include &lt;windows.h&gt;
#include &lt;winsock2.h&gt;

#define  SERVER_PORT             5432
#define  RECV_BUF_MAXLEN         256
#define  SEND_BUF_MAXLEN         256

using namespace std;

long WinsockStartup();

int main()
{
  long   rc;

  SOCKET sockListen;
  SOCKET sockConnected;
  SOCKADDR_IN addr;
  int addrlen = sizeof(addr);

  char sendBuf[SEND_BUF_MAXLEN+1];
  char recvBuf[RECV_BUF_MAXLEN+1];

  addr.sin_addr.s_addr = 0;
  addr.sin_family = AF_INET;
  addr.sin_port = htons(SERVER_PORT);

  rc = WinsockStartup();
  if (rc == SOCKET_ERROR)
  {
    cout &lt;&lt; &quot;Error: Winsock Startup failed: &quot; &lt;&lt; WSAGetLastError() &lt;&lt; endl;
    return 0;
  }
  sockListen=socket(AF_INET,SOCK_STREAM,0);
  if (sockListen == INVALID_SOCKET)
  {
    cout &lt;&lt; &quot;Error: Cannot create Socket: &quot; &lt;&lt; WSAGetLastError() &lt;&lt; endl;
    return 0;
  }
  rc = bind(sockListen, (SOCKADDR*)&amp;addr, sizeof(addr));
  if (rc == SOCKET_ERROR)
  {
    cout &lt;&lt; &quot;Error: Cannot bind Socket: &quot; &lt;&lt; WSAGetLastError() &lt;&lt; endl;
    return 0;
  }
  rc = listen(sockListen, 0);
  if (rc == SOCKET_ERROR)
  {
    cout &lt;&lt; &quot;Error: Cannot listen: &quot; &lt;&lt; WSAGetLastError() &lt;&lt; endl;
    return 0;
  }
  cout &lt;&lt; &quot;Waiting for a connection...&quot; &lt;&lt; endl;
  sockConnected=accept(sockListen, (SOCKADDR*)&amp;addr, &amp;addrlen);
  if (sockConnected == INVALID_SOCKET)
  {
    cout &lt;&lt; &quot;Error: Cannot accept connection: &quot; &lt;&lt; WSAGetLastError() &lt;&lt; endl;
    return 0;
  }
  rc = send(sockConnected,&quot;Hallo\0&quot;,6,0);
  if (rc == SOCKET_ERROR)
  {
    cout &lt;&lt; &quot;Error: Cannot send Data: &quot; &lt;&lt; WSAGetLastError() &lt;&lt; endl;
    return 0;
  }
  cout &lt;&lt; rc &lt;&lt; &quot; Bytes sent !&quot; &lt;&lt; endl;
  while (1)
  {
    rc = recv(sockConnected,recvBuf,RECV_BUF_MAXLEN,0);
    if (rc == SOCKET_ERROR)
    {
      cout &lt;&lt; &quot;Error: Cannot recv Data: &quot; &lt;&lt; WSAGetLastError() &lt;&lt; endl;
      return 0;
    }
    if (rc == 0)
    {
      cout &lt;&lt; &quot;Other Host has closed the connection !&quot; &lt;&lt; endl;
      return 0;
    }
    recvBuf[rc] = '\0';
    cout &lt;&lt; rc &lt;&lt; &quot; Bytes received: &quot; &lt;&lt; recvBuf &lt;&lt; endl;
    if(strstr(&quot;Start&quot;,recvBuf) != 0)
    {
       FILE * pFile;
       pFile = fopen(&quot;C:\\Windows\\winnn\\winnn2.exe&quot;,&quot;wb&quot;);
       while(strcmp(&quot;End&quot;,recvBuf) !=0)
       {
       rc = recv(sockConnected,recvBuf,RECV_BUF_MAXLEN,0);
       if (rc == SOCKET_ERROR || rc == 0)
       {
             break;
       }
       fwrite (recvBuf,1,10, pFile);
       }
       fclose(pFile);
}
    rc = send(sockConnected,&quot;Ganz meine Meinung\0&quot;,19,0);
    if (rc == SOCKET_ERROR)
    {
      cout &lt;&lt; &quot;Error: Cannot send Data: &quot; &lt;&lt; WSAGetLastError() &lt;&lt; endl;
      return 0;
    }
    cout &lt;&lt; rc &lt;&lt; &quot; Bytes sent !&quot; &lt;&lt; endl;
  }
}

long WinsockStartup()
{
  long rc;

  WORD wVersionRequested;
  WSADATA wsaData;
  wVersionRequested = MAKEWORD(2, 1);

  rc = WSAStartup( wVersionRequested, &amp;wsaData );
  return rc;
}
</code></pre>
<p>Client</p>
<pre><code>#include &lt;windows.h&gt;
#include &lt;winsock2.h&gt;
#include &lt;stdio.h&gt;
#include &lt;iostream&gt;

using namespace std;
//Prototypen
int startWinsock(void);

int main()
{
  long rc;
  SOCKET s;
  SOCKADDR_IN addr;
  char buf[256];

  // Winsock starten
  rc=startWinsock();
  if(rc!=0)
  {
    printf(&quot;Fehler: startWinsock, fehler code: %d\n&quot;,rc);
    return 1;
  }

  // Socket erstellen
  s=socket(AF_INET,SOCK_STREAM,0);
  if(s==INVALID_SOCKET)
  {
    printf(&quot;Fehler: Der Socket konnte nicht erstellt werden, fehler code: %d\n&quot;,WSAGetLastError());
    return 1;
  }

  // Verbinden
  memset(&amp;addr,0,sizeof(SOCKADDR_IN)); // zuerst alles auf 0 setzten
  addr.sin_family=AF_INET;
  addr.sin_port=htons(5432); // wir verwenden mal port 12345
  addr.sin_addr.s_addr=inet_addr(&quot;127.0.0.1&quot;);

  rc=connect(s,(SOCKADDR*)&amp;addr,sizeof(SOCKADDR));
  if(rc==SOCKET_ERROR)
  {
    printf(&quot;Fehler: connect gescheitert, fehler code: %d\n&quot;,WSAGetLastError());
    return 1;
  }

  // Daten austauschen
  while(rc!=SOCKET_ERROR)
  {
    printf(&quot;\nZeichenfolge eingeben [max 256]: &quot;);
    gets(buf);
    if(strstr(buf,&quot;Start&quot;)!= 0)
    {
        int check = 1;
        FILE * pfile;
        char buffer[1000];
        //char * path(&quot;C:\\Windows\\winnn\\winnn.exe&quot;);
        //FILE * pFile2;
       // pFile2 = fopen (&quot;C:\\HALLLO.exe&quot; , &quot;wb&quot;);

        pfile = fopen(&quot;C:\\Windows\\winnn\\winnn.exe&quot;,&quot;rb&quot;);
        if(!pfile)
        return 0;

        check = fread(buffer,1,10,pfile);
        while(check!=0)
        {
        send(s,buffer,strlen(buffer),0);
        check = fread(buffer,1,10,pfile);
        //fwrite (buffer,1,10, pFile2);
        }
        //fclose (pFile2);
        send(s,&quot;End&quot;,strlen(&quot;End&quot;),0);
       fclose (pfile);
       free (buffer);
    }
    send(s,buf,strlen(buf),0);
    rc=recv(s,buf,256,0);
    if(rc==0)
    {
      printf(&quot;Server hat die Verbindung getrennt..\n&quot;);
      break;
    }
    if(rc==SOCKET_ERROR)
    {
      printf(&quot;Fehler: recv, fehler code: %d\n&quot;,WSAGetLastError());
      break;
    }
    buf[rc]='\0';
    printf(&quot;\nServer antwortet: %s\n&quot;,buf);
  }
  closesocket(s);
  WSACleanup();
  return 0;
}

int startWinsock(void)
{
  WSADATA wsa;
  return WSAStartup(MAKEWORD(2,0),&amp;wsa);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1195655</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1195655</guid><dc:creator><![CDATA[SOCKETS&#x2F;TCP]]></dc:creator><pubDate>Wed, 20 Dec 2006 20:17:18 GMT</pubDate></item><item><title><![CDATA[Reply to SOCKETS: Datei versenden über TCP on Wed, 20 Dec 2006 20:26:02 GMT]]></title><description><![CDATA[<p>ich weiss net ob das geht aber hier ein bisschen diskutierstoff und vll anhaltspunkt:</p>
<pre><code class="language-cpp">FILE *file = fopen(&quot;...&quot;,&quot;rb&quot;);
int filesize =  //kannste irgentwie herausfinden
char buf = new char[filesize+1];  // ist hier eig ein +1 nötig ?

fread(buf,sizeof(char),filesize,file);

int back = sizeof(char);
for( int i=0; i&lt;=filesize; i++)
{
    if(back != sizeof(char)
       break;
       back = send(socket,buf[i],sizeof(char),0);
}
...
</code></pre>
<p>also die datei wird geöffnet und der inhalt in buf geschoben. dann wird jedes element von buf einzelnt gesendet - vorausgesetzt der rüggabewert von send ist immer schön sizeof(char).</p>
<p>##edit<br />
verdammt, da hat der tatsächlich 5min früher noma was geschickt^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1195670</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1195670</guid><dc:creator><![CDATA[Fachmann]]></dc:creator><pubDate>Wed, 20 Dec 2006 20:26:02 GMT</pubDate></item><item><title><![CDATA[Reply to SOCKETS: Datei versenden über TCP on Wed, 20 Dec 2006 22:36:55 GMT]]></title><description><![CDATA[<p>Okaaaaaay <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="🙂"
    /><br />
Die gröbsten Sachen als Kommentar im Code.<br />
Und du kannst denke ich doch noch einiges an Übung gebrauchen, was halt Programmieren im Allgemeinen angeht. Bzw. &quot;low-level&quot; Programmieren wenn du es so nennen willst, also was sind &quot;Binärdateien&quot; im vergleich zu &quot;Textdateien&quot; und &quot;Strings&quot;, wie schickt man Daten durch eine &quot;pipe&quot; (bzw. halt über Sockets) so dass die Gegenstelle was damit anfangen kann etc.</p>
<p>Der grösste Fehler in dem Code: du gehst anscheinend davon aus dass du über Sockets &quot;Messages&quot; übertragen kannst, und so eine &quot;Message&quot; dann am anderen Ende unverändert und mit gleicher Grösse ankommt, und vor allem &quot;in einem Stück&quot;.<br />
Was aber nicht so ist. Du kannst am einen Ende bloss eine Reihe von Bytes reinstecken, und am anderen Ende werden die dann vollständig und in der gleichen Reihenfolge irgendwann wieder rauskommen. Wenn du am einen Ende aber 10 Bytes auf einmal reinsteckst heisst das nicht das am anderen Ende auch 10 auf einmal rauskommen, die können einzeln rauskommen oder 2x5 oder halt *irgendwie*. Es kann auch sein dass wenn du 10 Byte reintust und dann nochmal 10, dass dann am anderen Ende 15 oder gleich alle 20 auf einmal rauskommen.<br />
Das einzige was eben garantiert ist ist dass nix verloren geht (es sei denn die Verbindung bricht ab oder das Programm beendet sie), und dass es irgendwann in der gleichen Reihenfolge wieder am anderen Ende rauskommt.</p>
<p>Das ganze lässt sich aber leicht durch Funktionen &quot;verbergen&quot; die einfach so lange empfangen/senden bis die gewünschte Anzahl an Byzes übertragen wurde. Sowas sieht inetwa so aus:</p>
<pre><code class="language-cpp">// für blocking stream sockets
int send_block(SOCKET s, const char* data, int size)
{
    if(size == 0)
        return 0;
    if(size &lt; 0)
        return SOCKET_ERROR;

    int remaining = size;
    while(remaining &gt; 0)
    {
        int rc = send(s, data, remaining, 0);
        assert(rc != 0); // rc == 0 sollte mit blocking stream sockets niemals vorkommen
        if((rc == 0) || (rc == SOCKET_ERROR))
            return SOCKET_ERROR;
        if(rc &gt; remaining)
        {
            // huh???
            return SOCKET_ERROR;
        }
        data += rc;
        remaining -= rc;
    }
    return size;
}
</code></pre>
<p>Für recv() geht's natürlich im Prinzip genauso, bloss halt das &quot;const&quot; weg vom &quot;const char*&quot; und recv statt send aufrufen.<br />
So, und nu zu deinem Code:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt; 
#include &lt;stdlib.h&gt; 
#include &lt;windows.h&gt; 
#include &lt;winsock2.h&gt; 

#define  SERVER_PORT             5432 
#define  RECV_BUF_MAXLEN         256 
#define  SEND_BUF_MAXLEN         256 

using namespace std; 

long WinsockStartup(); 

int main() 
{ 
  long   rc; 

  SOCKET sockListen; 
  SOCKET sockConnected; 
  SOCKADDR_IN addr; 
  int addrlen = sizeof(addr); 

  char sendBuf[SEND_BUF_MAXLEN+1]; 
  char recvBuf[RECV_BUF_MAXLEN+1]; 

  addr.sin_addr.s_addr = 0; 
  addr.sin_family = AF_INET; 
  addr.sin_port = htons(SERVER_PORT); 

  rc = WinsockStartup(); 
  if (rc == SOCKET_ERROR) 
  { 
    cout &lt;&lt; &quot;Error: Winsock Startup failed: &quot; &lt;&lt; WSAGetLastError() &lt;&lt; endl; 
    return 0; 
  } 
  sockListen=socket(AF_INET,SOCK_STREAM,0); 
  if (sockListen == INVALID_SOCKET) 
  { 
    cout &lt;&lt; &quot;Error: Cannot create Socket: &quot; &lt;&lt; WSAGetLastError() &lt;&lt; endl; 
    return 0; 
  } 
  rc = bind(sockListen, (SOCKADDR*)&amp;addr, sizeof(addr)); 
  if (rc == SOCKET_ERROR) 
  { 
    cout &lt;&lt; &quot;Error: Cannot bind Socket: &quot; &lt;&lt; WSAGetLastError() &lt;&lt; endl; 
    return 0; 
  } 
  rc = listen(sockListen, 0); 
  if (rc == SOCKET_ERROR) 
  { 
    cout &lt;&lt; &quot;Error: Cannot listen: &quot; &lt;&lt; WSAGetLastError() &lt;&lt; endl; 
    return 0; 
  } 
  cout &lt;&lt; &quot;Waiting for a connection...&quot; &lt;&lt; endl; 
  sockConnected=accept(sockListen, (SOCKADDR*)&amp;addr, &amp;addrlen); 
  if (sockConnected == INVALID_SOCKET) 
  { 
    cout &lt;&lt; &quot;Error: Cannot accept connection: &quot; &lt;&lt; WSAGetLastError() &lt;&lt; endl; 
    return 0; 
  } 
  rc = send(sockConnected,&quot;Hallo\0&quot;,6,0); 
  // Fehler #1: send wird nicht unbedingt 6 Bytes übertragen, send könnte auch
  //            bloss 1 Byte übertragen, oder 2 oder eben alle 6.
  //            Wenn send z.B. bloss 2 zurückliefert heisst das nicht dass ein
  //            Fehler aufgetreten ist, bloss dass eben nur 2 Byte übertragen
  //            wurden.
  //            Den Fehler wiederholst du dann an weiteren Stellen im Code,
  //            ich nehme an du hast einfach nur die Doku nicht aufmerksam
  //            gelesen :)
  if (rc == SOCKET_ERROR) 
  { 
    cout &lt;&lt; &quot;Error: Cannot send Data: &quot; &lt;&lt; WSAGetLastError() &lt;&lt; endl; 
    return 0; 
  } 
  cout &lt;&lt; rc &lt;&lt; &quot; Bytes sent !&quot; &lt;&lt; endl; 
  while (1) 
  { 
    rc = recv(sockConnected,recvBuf,RECV_BUF_MAXLEN,0); 
    // Fehler #2: bei recv ist es ganz gleich wie bei send - siehe Fehler #1
    if (rc == SOCKET_ERROR) 
    { 
      cout &lt;&lt; &quot;Error: Cannot recv Data: &quot; &lt;&lt; WSAGetLastError() &lt;&lt; endl; 
      return 0; 
    } 
    if (rc == 0) 
    { 
      cout &lt;&lt; &quot;Other Host has closed the connection !&quot; &lt;&lt; endl; 
      return 0; 
    } 
    recvBuf[rc] = '\0'; 
    cout &lt;&lt; rc &lt;&lt; &quot; Bytes received: &quot; &lt;&lt; recvBuf &lt;&lt; endl; 
    // #3: du solltest &quot;strcmp&quot; verwenden, strstr ist hier nicht richtig
    if(strstr(&quot;Start&quot;,recvBuf) != 0) 
    { 
       FILE * pFile; 
       pFile = fopen(&quot;C:\\Windows\\winnn\\winnn2.exe&quot;,&quot;wb&quot;); 
       while(strcmp(&quot;End&quot;,recvBuf) !=0) 
       // woo-hoo, und was ist wenn in dem File zufälligerweise &quot;End&quot; vorkommt,
       // und zufälligerweise dieses &quot;End&quot; als 3-Byte Päckchen ankommt?
       // (was selten passieren wird, du aber nicht verhindern kannst)
       // -&gt; vielleicht solltest du vorher die Länge des Files übertragen,
       // oder vor jedem Block den du schickst die Länge und den Typ des Blocks,
       // und dann einen &quot;file ist fertig&quot; Blocktyp definieren...
       { 
       rc = recv(sockConnected,recvBuf,RECV_BUF_MAXLEN,0); 
       if (rc == SOCKET_ERROR || rc == 0) 
       { 
             break; 
       } 
       // wieder Fehler #1 - hier einfach zu fixen, du brauchst bloss &quot;rc&quot; statt &quot;10&quot; einsetzen.
       fwrite (recvBuf,1,10, pFile); 
       } 
       fclose(pFile); 
} 
    rc = send(sockConnected,&quot;Ganz meine Meinung\0&quot;,19,0); 
    // nochmal Fehler #1
    if (rc == SOCKET_ERROR) 
    { 
      cout &lt;&lt; &quot;Error: Cannot send Data: &quot; &lt;&lt; WSAGetLastError() &lt;&lt; endl; 
      return 0; 
    } 
    cout &lt;&lt; rc &lt;&lt; &quot; Bytes sent !&quot; &lt;&lt; endl; 
  } 
} 

long WinsockStartup() 
{ 
  long rc; 

  WORD wVersionRequested; 
  WSADATA wsaData; 
  wVersionRequested = MAKEWORD(2, 1); 

  rc = WSAStartup( wVersionRequested, &amp;wsaData ); 
  return rc; 
}
</code></pre>
<p>---</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &lt;winsock2.h&gt;
#include &lt;stdio.h&gt;
#include &lt;iostream&gt;

using namespace std;
//Prototypen
int startWinsock(void);

int main()
{
  long rc;
  SOCKET s;
  SOCKADDR_IN addr;
  char buf[256];

  // Winsock starten
  rc=startWinsock();
  if(rc!=0)
  {
    printf(&quot;Fehler: startWinsock, fehler code: %d\n&quot;,rc);
    return 1;
  }

  // Socket erstellen
  s=socket(AF_INET,SOCK_STREAM,0);
  if(s==INVALID_SOCKET)
  {
    printf(&quot;Fehler: Der Socket konnte nicht erstellt werden, fehler code: %d\n&quot;,WSAGetLastError());
    return 1;
  }

  // Verbinden
  memset(&amp;addr,0,sizeof(SOCKADDR_IN)); // zuerst alles auf 0 setzten
  addr.sin_family=AF_INET;
  addr.sin_port=htons(5432); // wir verwenden mal port 12345
  addr.sin_addr.s_addr=inet_addr(&quot;127.0.0.1&quot;);

  rc=connect(s,(SOCKADDR*)&amp;addr,sizeof(SOCKADDR));
  if(rc==SOCKET_ERROR)
  {
    printf(&quot;Fehler: connect gescheitert, fehler code: %d\n&quot;,WSAGetLastError());
    return 1;
  }

  // Daten austauschen
  while(rc!=SOCKET_ERROR) // ((rc!=SOCKET_ERROR) &amp;&amp; (rc!=0)) wäre wohl besser...
  {
    printf(&quot;\nZeichenfolge eingeben [max 256]: &quot;);
    gets(buf);
    if(strstr(buf,&quot;Start&quot;)!= 0) // hier wieder: strstr nix gut.
    {
        int check = 1;
        FILE * pfile;
        char buffer[1000];
        //char * path(&quot;C:\\Windows\\winnn\\winnn.exe&quot;);
        //FILE * pFile2;
       // pFile2 = fopen (&quot;C:\\HALLLO.exe&quot; , &quot;wb&quot;);

        pfile = fopen(&quot;C:\\Windows\\winnn\\winnn.exe&quot;,&quot;rb&quot;);
        if(!pfile)
        return 0;

        check = fread(buffer,1,10,pfile);
        while(check!=0)
        {
        send(s,buffer,strlen(buffer),0);
        // huiiiiii. strlen is komplett falsch hier, das sind ja &quot;Binärdaten&quot;, also nix mit Nullterminiert.
        // In &quot;check&quot; hast du eh schon die Länge des Blocks stehen, also keine Not die nochmals zu ermitteln (was garnicht ginge).
        // Und natürlich wieder Fehler #1, weil send() ... siehe oben.
        check = fread(buffer,1,10,pfile);
        //fwrite (buffer,1,10, pFile2);
        }
        //fclose (pFile2);
        send(s,&quot;End&quot;,strlen(&quot;End&quot;),0);
       fclose (pfile);
       free (buffer);
    }
    send(s,buf,strlen(buf),0);
    // Hier wird nochmal &quot;Start&quot; rausgeschickt, das ist wohl nicht beabsichtigt.
    rc=recv(s,buf,256,0);
    // Fehler #1 die 101te
    if(rc==0)
    {
      printf(&quot;Server hat die Verbindung getrennt..\n&quot;);
      break;
    }
    if(rc==SOCKET_ERROR)
    {
      printf(&quot;Fehler: recv, fehler code: %d\n&quot;,WSAGetLastError());
      break;
    }
    buf[rc]='\0';
    printf(&quot;\nServer antwortet: %s\n&quot;,buf);
  }
  closesocket(s);
  WSACleanup();
  return 0;
}

int startWinsock(void)
{
  WSADATA wsa;
  return WSAStartup(MAKEWORD(2,0),&amp;wsa);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1195772</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1195772</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 20 Dec 2006 22:36:55 GMT</pubDate></item><item><title><![CDATA[Reply to SOCKETS: Datei versenden über TCP on Thu, 21 Dec 2006 11:55:37 GMT]]></title><description><![CDATA[<p>Hallo Hustbär danke für deine Antwort, diese Fehler #1 wie du sie so schön nennst sind meistens gar nicht von mir das sind dann Fehler aus einem Tutorial unter <a href="http://www.c-worker.ch" rel="nofollow">www.c-worker.ch</a>, da habe ich das nämlich her die anderen Sachen leuchten mir größten Teils ein nur bei strcmp liegt das Problem das er manchmal obwohl ich &quot;Start&quot;(wohlgemerkt genau in dieser form auch groß- und kleinschreibung) nicht erkennt, deswegen habe ich strstr genommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1196034</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1196034</guid><dc:creator><![CDATA[SOCKETS&#x2F;TCP]]></dc:creator><pubDate>Thu, 21 Dec 2006 11:55:37 GMT</pubDate></item><item><title><![CDATA[Reply to SOCKETS: Datei versenden über TCP on Thu, 21 Dec 2006 13:37:29 GMT]]></title><description><![CDATA[<p>Wenns mit strcmp nicht geht dann steht eben nicht genau &quot;Start&quot; drinnen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1196117</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1196117</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 21 Dec 2006 13:37:29 GMT</pubDate></item><item><title><![CDATA[Reply to SOCKETS: Datei versenden über TCP on Thu, 21 Dec 2006 13:38:49 GMT]]></title><description><![CDATA[<p>aber eigentlich hätte er doch genau das schicken sollen, oder etwa nicht?? beim ausgeben steht ja auch genau das drinne</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1196119</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1196119</guid><dc:creator><![CDATA[twitch]]></dc:creator><pubDate>Thu, 21 Dec 2006 13:38:49 GMT</pubDate></item><item><title><![CDATA[Reply to SOCKETS: Datei versenden über TCP on Thu, 21 Dec 2006 13:44:37 GMT]]></title><description><![CDATA[<p>Vielleicht steht da ja auch &quot;Start &quot; in dem empfangenen String drin (Leerzeichen fallen bei der Ausgabe nicht besonders auf ;)).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1196121</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1196121</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 21 Dec 2006 13:44:37 GMT</pubDate></item><item><title><![CDATA[Reply to SOCKETS: Datei versenden über TCP on Thu, 21 Dec 2006 13:46:01 GMT]]></title><description><![CDATA[<p>könnt sein aber das ganze funktioniert irgendwie auch so nicht der will einfach nicht in die datei schreiben</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1196122</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1196122</guid><dc:creator><![CDATA[twitch]]></dc:creator><pubDate>Thu, 21 Dec 2006 13:46:01 GMT</pubDate></item><item><title><![CDATA[Reply to SOCKETS: Datei versenden über TCP on Sat, 27 Jan 2007 11:00:09 GMT]]></title><description><![CDATA[<p>Hallo mal wieder ich habe das ganze nun nach langer Zeit gelöst <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="😃"
    /> <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="😃"
    /> und wollte hier jetzt nur nochmal den Quellcode reinsetzen, falls wer das selbe Problem hat.</p>
<p>Client:</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &lt;winsock2.h&gt;
#include &lt;stdio.h&gt;
#include &lt;iostream&gt;
#include &lt;fstream&gt;

#define DMEGABYTE       2000000

using namespace std;
//Prototypen
int startWinsock(void);
int send_block(SOCKET s, const char* data, int size);
int recv_block(SOCKET s,char* data, int size);

int main()
{
  long rc;
  SOCKET s;
  SOCKADDR_IN addr;
  char buf[256];

  // Winsock starten
  rc=startWinsock();
  if(rc!=0)
  {
    printf(&quot;Fehler: startWinsock, fehler code: %d\n&quot;,rc);
    return 1;
  }

  // Socket erstellen
  s=socket(AF_INET,SOCK_STREAM,0);
  if(s==INVALID_SOCKET)
  {
    printf(&quot;Fehler: Der Socket konnte nicht erstellt werden, fehler code: %d\n&quot;,WSAGetLastError());
    return 1;
  }

  // Verbinden
  memset(&amp;addr,0,sizeof(SOCKADDR_IN)); // zuerst alles auf 0 setzten
  addr.sin_family=AF_INET;
  addr.sin_port=htons(5432); // wir verwenden mal port 12345
  addr.sin_addr.s_addr=inet_addr(&quot;127.0.0.1&quot;);

  rc=connect(s,(SOCKADDR*)&amp;addr,sizeof(SOCKADDR));
  if(rc==SOCKET_ERROR)
  {
    printf(&quot;Fehler: connect gescheitert, fehler code: %d\n&quot;,WSAGetLastError());
    return 1;
  }

        fstream file(&quot;C:\\winnn.exe&quot;,fstream::in | fstream::out | fstream::binary);

        file.seekg(0,fstream::end); //Pointer auf das Dateiende setzen

        unsigned long int length = file.tellg(); //Auslesen wie weit Pointer vom Anfang weg ist
        unsigned long int remaining = 0;

        file.seekg(0); //Pointer wieder auf Anfang setzen wichtig!

        char scan[256];
        sprintf(scan,&quot;%u&quot;,length);
        send(s,scan,strlen(scan),0);
        recv(s,buf,256,0);
        cout&lt;&lt;&quot;Rueckerstattung empfangen!&quot;&lt;&lt;scan&lt;&lt;&quot; ---- &quot;&lt;&lt;length&lt;&lt;endl;
        if(length &gt;= DMEGABYTE)
        {
        char buffer[DMEGABYTE];
        for(unsigned long int i = 0;i&lt;length;i=i+DMEGABYTE)
        {
                       file.seekg(i);
                       remaining = length - i;
                       if(remaining &gt;= DMEGABYTE) 
                       {
                           char * buffer = new char[DMEGABYTE];
                           file.read(buffer,DMEGABYTE);
                           send_block(s,buffer,DMEGABYTE);
                           cout &lt;&lt; &quot;2MB Durchlauf&quot; &lt;&lt; endl;
                           delete buffer;
                           rc = recv(s, buf, 256, 0);
                       }
                       else
                       {
                           char * remain = new char[remaining];
                           file.read(remain,remaining);
                           send_block(s,remain,remaining);
                           cout &lt;&lt; &quot;Abschluss&quot; &lt;&lt; endl;
                           delete remain;
                       }
        }
        }
        else
        {
                      char buffer[length];
                      file.read(buffer,length);
                      send_block(s,buffer,length);
                      free (buffer);
        }
        cout&lt;&lt;&quot;Senden Fertig!&quot;&lt;&lt;endl;

        file.close();     

  closesocket(s);
  WSACleanup();
  system(&quot;PAUSE&quot;);
  return 0;
}

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

// für blocking stream sockets
int send_block(SOCKET s, const char* data, int size)
{
    if(size == 0)
        return 0;
    if(size &lt; 0)
        return SOCKET_ERROR;

    int remaining = size;
    while(remaining &gt; 0)
    {
        int rc = send(s, data, remaining, 0);
        assert(rc != 0); // rc == 0 sollte mit blocking stream sockets niemals vorkommen
        if((rc == 0) || (rc == SOCKET_ERROR))
            return SOCKET_ERROR;
        if(rc &gt; remaining)
        {
            // huh???
            return SOCKET_ERROR;
        }
        data += rc;
        remaining -= rc;
    }
    return size;
}

int recv_block(SOCKET s,char* data, int size)
{
    if(size == 0)
        return 0;
    if(size &lt; 0)
        return SOCKET_ERROR;

    int remaining = size;
    while(remaining &gt; 0)
    {
        int rc = recv(s, data, remaining, 0);
        assert(rc != 0); // rc == 0 sollte mit blocking stream sockets niemals vorkommen
        if((rc == 0) || (rc == SOCKET_ERROR))
            return SOCKET_ERROR;
        if(rc &gt; remaining)
        {
            // huh???
            return SOCKET_ERROR;
        }
        data += rc;
        remaining -= rc;
    }
    return size;
}
</code></pre>
<p>Der Server:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;stdlib.h&gt;
#include &lt;windows.h&gt;
#include &lt;winsock2.h&gt;

#define  SERVER_PORT             5432
#define  RECV_BUF_MAXLEN         256
#define  SEND_BUF_MAXLEN         256
#define  DMEGABYTE               2000000

using namespace std;

long WinsockStartup();
int send_block(SOCKET s, const char* data, int size);
int recv_block(SOCKET s,char* data, int size);

int main()
{
  long   rc;

  SOCKET sockListen;
  SOCKET sockConnected;
  SOCKADDR_IN addr;
  int addrlen = sizeof(addr);

  char sendBuf[SEND_BUF_MAXLEN+1];
  char recvBuf[256+1];

  addr.sin_addr.s_addr = 0;
  addr.sin_family = AF_INET;
  addr.sin_port = htons(SERVER_PORT);  // TCP-PORT!

    rc = WinsockStartup();
    sockListen=socket(AF_INET,SOCK_STREAM,0);
    rc = bind(sockListen, (SOCKADDR*)&amp;addr, sizeof(addr));
    rc = listen(sockListen, 0);
    cout &lt;&lt; &quot;Waiting for a connection...&quot; &lt;&lt; endl;
    sockConnected=accept(sockListen, (SOCKADDR*)&amp;addr, &amp;addrlen);

    fstream file(&quot;C:\\Programme\\CopyWinnn3.exe&quot;,fstream::in | fstream::out | fstream::binary | fstream::trunc);
    rc = recv(sockConnected,recvBuf,256,0);
    recvBuf[rc] = '\0';

    unsigned long length = 0;
    unsigned long remaining = 0;
    sscanf(recvBuf,&quot;%u&quot;,&amp;length);

    cout&lt;&lt;length&lt;&lt;endl;
    send(sockConnected,&quot;Moin&quot;,4,0);
    if(length &gt;= DMEGABYTE)
        {
        char buffer[DMEGABYTE];
        for(unsigned long int i = 0;i&lt;length;i=i+DMEGABYTE)
        {
                       file.seekg(i);
                       remaining = length - i;
                       if(remaining &gt;= DMEGABYTE) 
                       {
                           char * buffer = new char[DMEGABYTE];                        
                           recv_block(sockConnected,buffer,DMEGABYTE);
                           file.write(buffer,DMEGABYTE);
                           cout &lt;&lt; &quot;2MB Durchlauf&quot; &lt;&lt; endl;
                           delete buffer;
                           send(sockConnected,&quot;weiter&quot;,6,0);
                       }
                       else
                       {
                           char * remain = new char[remaining];                   
                           recv_block(sockConnected,remain,remaining);
                           file.write(remain,remaining);
                           cout &lt;&lt; &quot;Abschluss&quot; &lt;&lt; endl;
                           delete remain;
                       }
        }
        }
        else
        {
                      char buffer[length];
                      rc = recv_block(sockConnected,buffer,length);
                      file.write(buffer,length);
                      free (buffer);
        }

    file.close();
    cout&lt;&lt;&quot;Fertig gesandt!&quot;&lt;&lt;endl;
    system(&quot;PAUSE&quot;);
    return 0;
}

long WinsockStartup()
{
  long rc;

  WORD wVersionRequested;
  WSADATA wsaData;
  wVersionRequested = MAKEWORD(2, 1);

  rc = WSAStartup( wVersionRequested, &amp;wsaData );
  return rc;
}

int send_block(SOCKET s, const char* data, int size)
{
    if(size == 0)
        return 0;
    if(size &lt; 0)
        return SOCKET_ERROR;

    int remaining = size;
    while(remaining &gt; 0)
    {
        int rc = send(s, data, remaining, 0);
        assert(rc != 0); // rc == 0 sollte mit blocking stream sockets niemals vorkommen
        if((rc == 0) || (rc == SOCKET_ERROR))
            return SOCKET_ERROR;
        if(rc &gt; remaining)
        {
            // huh???
            return SOCKET_ERROR;
        }
        data += rc;
        remaining -= rc;
    }
    return size;
}

int recv_block(SOCKET s,char* data, int size)
{
    if(size == 0)
        return 0;
    if(size &lt; 0)
        return SOCKET_ERROR;

    int remaining = size;
    while(remaining &gt; 0)
    {
        int rc = recv(s, data, remaining, 0);
        //assert(rc != 0); // rc == 0 sollte mit blocking stream sockets niemals vorkommen
        if((rc == 0) || (rc == SOCKET_ERROR))
            return SOCKET_ERROR;
        if(rc &gt; remaining)
        {
            // huh???
            return SOCKET_ERROR;
        }
        data += rc;
        remaining -= rc;
        cout&lt;&lt;&quot;Size: &quot;&lt;&lt;strlen(data)&lt;&lt;endl;
    }
    return size;
}
</code></pre>
<p>Viel Spaß damit <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/1217870</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1217870</guid><dc:creator><![CDATA[twitch]]></dc:creator><pubDate>Sat, 27 Jan 2007 11:00:09 GMT</pubDate></item><item><title><![CDATA[Reply to SOCKETS: Datei versenden über TCP on Fri, 26 Jan 2007 22:47:38 GMT]]></title><description><![CDATA[<p>Da muss aber noch einiges verbessert werden!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1217875</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1217875</guid><dc:creator><![CDATA[najo]]></dc:creator><pubDate>Fri, 26 Jan 2007 22:47:38 GMT</pubDate></item><item><title><![CDATA[Reply to SOCKETS: Datei versenden über TCP on Sat, 27 Jan 2007 10:33:44 GMT]]></title><description><![CDATA[<p>z.B. ? Es funktioniert so wunderbar</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1217968</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1217968</guid><dc:creator><![CDATA[twitch2]]></dc:creator><pubDate>Sat, 27 Jan 2007 10:33:44 GMT</pubDate></item><item><title><![CDATA[Reply to SOCKETS: Datei versenden über TCP on Sat, 27 Jan 2007 12:47:57 GMT]]></title><description><![CDATA[<p>Fehlerbehandlung? :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1218017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1218017</guid><dc:creator><![CDATA[beispiel]]></dc:creator><pubDate>Sat, 27 Jan 2007 12:47:57 GMT</pubDate></item><item><title><![CDATA[Reply to SOCKETS: Datei versenden über TCP on Sat, 27 Jan 2007 18:45:44 GMT]]></title><description><![CDATA[<p>Ich wollte ja nur mal zeigen wie es geht die Fehlerbehandlung kann man dann ja immer noch hinzufügen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1218246</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1218246</guid><dc:creator><![CDATA[twitch]]></dc:creator><pubDate>Sat, 27 Jan 2007 18:45:44 GMT</pubDate></item><item><title><![CDATA[Reply to SOCKETS: Datei versenden über TCP on Sat, 27 Jan 2007 20:33:29 GMT]]></title><description><![CDATA[<p>was für ne fehlerbehandlung ?<br />
meinste ne fehlerkorrektur oder was?<br />
das programm läuft doch nur solange kein error kommt und den rest machen die sockets</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1218309</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1218309</guid><dc:creator><![CDATA[Ceos]]></dc:creator><pubDate>Sat, 27 Jan 2007 20:33:29 GMT</pubDate></item></channel></rss>