<?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[Dateien über Winsock versenden]]></title><description><![CDATA[<p>Moin!<br />
Ich versuche gerade, eine Datei über Winsock zu versenden - doch irgednwie<br />
klappt das nicht so, wie ich mir das vorstelle <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="🙄"
    /><br />
Könnte mir da einer von euch weiterhelfen?</p>
<p>Vielen Dank im vorrau*s!<br />
Maxime <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>Der Code:</p>
<pre><code class="language-cpp">//EMPFÄNGER

//Die Buffergröße
char buffer[256];

while (strcmp(buffer, &quot;&quot;) == 0)
{
	rc=recv(s,buffer,256,0);
	buffer[rc]='\0';
}

Sleep(5000);		
int FileSize = atoi(buffer);

//Die eigentliche Datei empfangen

	char fbuf[sizeof (FileSize)];
	rc=recv(s,fbuf,256,0);
	fbuf[rc]='\0';

	HANDLE sendfile; DWORD BytesWritten = 0;
	sendfile = CreateFile(&quot;text.txt&quot;, GENERIC_WRITE, NULL, NULL, CREATE_ALWAYS, NULL, NULL);
	WriteFile(sendfile, fbuf, FileSize, &amp;BytesWritten, NULL);

	CloseHandle(sendfile);
</code></pre>
<pre><code class="language-cpp">//SENDER
	HANDLE file;
	char * buffer;
	int FileSize = 0;
	DWORD BytesRead = 0;

	file = CreateFile(&quot;text.txt&quot;, GENERIC_READ, NULL, NULL, OPEN_EXISTING, NULL, NULL);
	FileSize = GetFileSize(file, NULL);
	buffer = new char[FileSize];
	ReadFile(file, (void*)buffer, FileSize, &amp;BytesRead, NULL);

	char sFileSize[sizeof(FileSize)];
	sprintf(sFileSize2, &quot;%d\0&quot;, FileSize);

	send(connectedSocket, sFileSize2, FileSize, 0);
	Sleep(250);
	send(connectedSocket, buffer, FileSize, 0);

	CloseHandle(file);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/72936/dateien-über-winsock-versenden</link><generator>RSS for Node</generator><lastBuildDate>Mon, 13 Apr 2026 19:08:57 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/72936.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 04 May 2004 08:40:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Dateien über Winsock versenden on Tue, 04 May 2004 08:40:40 GMT]]></title><description><![CDATA[<p>Moin!<br />
Ich versuche gerade, eine Datei über Winsock zu versenden - doch irgednwie<br />
klappt das nicht so, wie ich mir das vorstelle <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="🙄"
    /><br />
Könnte mir da einer von euch weiterhelfen?</p>
<p>Vielen Dank im vorrau*s!<br />
Maxime <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>Der Code:</p>
<pre><code class="language-cpp">//EMPFÄNGER

//Die Buffergröße
char buffer[256];

while (strcmp(buffer, &quot;&quot;) == 0)
{
	rc=recv(s,buffer,256,0);
	buffer[rc]='\0';
}

Sleep(5000);		
int FileSize = atoi(buffer);

//Die eigentliche Datei empfangen

	char fbuf[sizeof (FileSize)];
	rc=recv(s,fbuf,256,0);
	fbuf[rc]='\0';

	HANDLE sendfile; DWORD BytesWritten = 0;
	sendfile = CreateFile(&quot;text.txt&quot;, GENERIC_WRITE, NULL, NULL, CREATE_ALWAYS, NULL, NULL);
	WriteFile(sendfile, fbuf, FileSize, &amp;BytesWritten, NULL);

	CloseHandle(sendfile);
</code></pre>
<pre><code class="language-cpp">//SENDER
	HANDLE file;
	char * buffer;
	int FileSize = 0;
	DWORD BytesRead = 0;

	file = CreateFile(&quot;text.txt&quot;, GENERIC_READ, NULL, NULL, OPEN_EXISTING, NULL, NULL);
	FileSize = GetFileSize(file, NULL);
	buffer = new char[FileSize];
	ReadFile(file, (void*)buffer, FileSize, &amp;BytesRead, NULL);

	char sFileSize[sizeof(FileSize)];
	sprintf(sFileSize2, &quot;%d\0&quot;, FileSize);

	send(connectedSocket, sFileSize2, FileSize, 0);
	Sleep(250);
	send(connectedSocket, buffer, FileSize, 0);

	CloseHandle(file);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/513911</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/513911</guid><dc:creator><![CDATA[Maxime]]></dc:creator><pubDate>Tue, 04 May 2004 08:40:40 GMT</pubDate></item><item><title><![CDATA[Reply to Dateien über Winsock versenden on Tue, 04 May 2004 08:48:31 GMT]]></title><description><![CDATA[<p>Wird denn gar nichts in die Datei geschrieben oder eben nur der Anfang?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/513915</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/513915</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Tue, 04 May 2004 08:48:31 GMT</pubDate></item><item><title><![CDATA[Reply to Dateien über Winsock versenden on Tue, 04 May 2004 09:00:52 GMT]]></title><description><![CDATA[<p>Es wird leider gar nichts in die Datei geschreiben <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="😞"
    /><br />
Wenn ich den Buffer selbst bestimme, wird die Datei vollständig übertragen<br />
- aber das ist ja nicht mein Ziel <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>
]]></description><link>https://www.c-plusplus.net/forum/post/513921</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/513921</guid><dc:creator><![CDATA[Maxime]]></dc:creator><pubDate>Tue, 04 May 2004 09:00:52 GMT</pubDate></item><item><title><![CDATA[Reply to Dateien über Winsock versenden on Tue, 04 May 2004 09:11:52 GMT]]></title><description><![CDATA[<p>Also beim Sender ist alles OK - habe gerade einen Test mit ´ner MessageBox gemacht. Nur beim Empfänger wird der Buffer schon falsch empfangen:</p>
<pre><code class="language-cpp">//Sender:
sprintf(FileSize2, &quot;%d\0&quot;, FileSize);
MessageBox(NULL, FileSize2, NULL, NULL);
//Dateigröße wird korrekt angezeigt
</code></pre>
<pre><code class="language-cpp">Empfänger:
while (strcmp(buffer, &quot;&quot;) == 0)
{
rc=recv(s,buffer,256,0);
buffer[rc]='\0';
}

Sleep(5000);
MessageBox(NULL, buffer, NULL, NULL);
//Es sind noch nicht einmal Zahlen zu erkennen
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/513928</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/513928</guid><dc:creator><![CDATA[Maxime]]></dc:creator><pubDate>Tue, 04 May 2004 09:11:52 GMT</pubDate></item><item><title><![CDATA[Reply to Dateien über Winsock versenden on Tue, 04 May 2004 14:31:28 GMT]]></title><description><![CDATA[<p>Klappt es denn, wenn du normalen Text versuchst zu versenden? Und außerdem musst du bedenken, dass Dateien auch mittendrin mal 0-Zeichen haben können - also Vorsicht mit Stringfunktionen <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/514167</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/514167</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Tue, 04 May 2004 14:31:28 GMT</pubDate></item><item><title><![CDATA[Reply to Dateien über Winsock versenden on Tue, 04 May 2004 15:41:17 GMT]]></title><description><![CDATA[<p>Ich denke mal, dass es an den 0-Zeichen liegt.<br />
Habe den Dateinamen &quot;text.txt&quot; nämlich nur als Beispiel eingesetzt, weil ich<br />
dachte, an dem Code sei etwas falsch. <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="🙄"
    /> (Eigentlich habe ich vor, eine Gif-Datei zu senden).</p>
<blockquote>
<p>Klappt es denn, wenn du normalen Text versuchst zu versenden?</p>
</blockquote>
<p>Klar! Wenn ich die FileSize ja selber bestimme, wir die Datei vollständig übertragen.</p>
<p>Das mit den 0-Zeichen wusste ich gar nicht <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="🙄"
    /> - könntest du mir da mal ein paar Alternativen geben?</p>
<p>Danke <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/514236</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/514236</guid><dc:creator><![CDATA[Maxime]]></dc:creator><pubDate>Tue, 04 May 2004 15:41:17 GMT</pubDate></item><item><title><![CDATA[Reply to Dateien über Winsock versenden on Tue, 04 May 2004 16:10:04 GMT]]></title><description><![CDATA[<p>Hat sich erledigt!<br />
Es hätte</p>
<pre><code class="language-cpp">send(connectedSocket, FileSize2, sizeof(FileSize), 0);
</code></pre>
<p>heißen müssen - und nicht</p>
<pre><code class="language-cpp">send(connectedSocket, FileSize2, FileSize, 0);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/514258</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/514258</guid><dc:creator><![CDATA[Maxime]]></dc:creator><pubDate>Tue, 04 May 2004 16:10:04 GMT</pubDate></item><item><title><![CDATA[Reply to Dateien über Winsock versenden on Tue, 04 May 2004 16:26:28 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">char fbuf[sizeof (FileSize)]; 
rc=recv(s,fbuf,256,0); 
fbuf[rc]='\0';
</code></pre>
<p>dein buffer ist 256 byte gross, so gibt du es auch an<br />
mit rc erhälst du die bytes, die tasächlich gesendet wurden.</p>
<p>mein vorschlag, sende ein stream beginnend mit der der anzahl deiner zu senden datei gefolgt mit dem eigendlichen inhalt.</p>
<p>wenn du die ersten bytes empfängst, z.b size_t == 4 byte weißt du wie gross deine zu empfangende datei ist.</p>
<p>den buffer würde ich mit 1024 bytes festlegen</p>
<pre><code class="language-cpp">char* rbuf=NULL;
size_t pos, n;

char fbuf[1024]; 
rc=recv(s,fbuf,1024,0); 
if (rbuf==NULL)
{
  // vorausgesetzt rc&gt;=4 !!
  memcpy(&amp;n, fbuf, sizeof(size_t));
  rbuf=new char[n];
  rc -=sizeof(size_t);
  fbuf +=sizeof(size_t);
}
memcpy(rbuf, fbuf, rc);
pos=rc;

while (n != pos)
{
  rc=recv(s,fbuf,1024,0);
  memcpy(rbuf, fbuf, rc);
  n +=rc;
}
</code></pre>
<p>so in der richtung würde ich es realisieren</p>
<p>hat sich ja erledigt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/514262</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/514262</guid><dc:creator><![CDATA[vdittrich]]></dc:creator><pubDate>Tue, 04 May 2004 16:26:28 GMT</pubDate></item><item><title><![CDATA[Reply to Dateien über Winsock versenden on Tue, 04 May 2004 16:46:51 GMT]]></title><description><![CDATA[<p>Hi vdittrich!<br />
Vielen Dank für den Code!<br />
Den kann ich trotzdem gut gebrauchen - denn bei meiner aktuellen<br />
Lösung werden komischerweise nur die 1. vier Zeichen empfangen <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>Vielen Dank für die ganzen Antworten!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/514271</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/514271</guid><dc:creator><![CDATA[Maxime]]></dc:creator><pubDate>Tue, 04 May 2004 16:46:51 GMT</pubDate></item><item><title><![CDATA[Reply to Dateien über Winsock versenden on Tue, 04 May 2004 17:09:26 GMT]]></title><description><![CDATA[<p>Warum werden denn eigetnlich nur die 1. vier Zeichen empfangen?<br />
Würde mich auch mal interessieren <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>
]]></description><link>https://www.c-plusplus.net/forum/post/514295</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/514295</guid><dc:creator><![CDATA[noobstar]]></dc:creator><pubDate>Tue, 04 May 2004 17:09:26 GMT</pubDate></item><item><title><![CDATA[Reply to Dateien über Winsock versenden on Tue, 04 May 2004 18:47:29 GMT]]></title><description><![CDATA[<p>was etwas schlecht beschrieben</p>
<p>mein vorschlag, sende ein stream beginnend mit der der grösse (z.b in size_t) zu senden datei gefolgt mit dem eigendlichen inhalt.</p>
<p>wenn du mindestens die ersten 4 bytes (siehe (z.b in size_t)) empfangen hast, weißt du an hand der im stream gesendeten bytes, wie gross deine datei ist.</p>
<pre><code class="language-cpp">rc=recv(s,fbuf,1024,0);
// rc enthält die tatsächlich und in deb buffer geschriebenen bytes
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/514364</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/514364</guid><dc:creator><![CDATA[vdittrich]]></dc:creator><pubDate>Tue, 04 May 2004 18:47:29 GMT</pubDate></item><item><title><![CDATA[Reply to Dateien über Winsock versenden on Tue, 04 May 2004 19:47:56 GMT]]></title><description><![CDATA[<p>Also... ich versuch´s mal zu verstehen...<br />
1. Die Variablen werden deklariert. (Klar)<br />
2. Die Dateigröße und der Dateiinhalt werden in einem Stream empfangen<br />
3. Wenn rbuf NULL ist, werden die ersten ? Zeichen von fbuf in n &quot;kopiert&quot;.<br />
Den Rest mit - und + versteh´ ich leider noch net <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>Kann ich den Codeteil denn komplett in mein Projekt übernehmen (oder muss ich doch noch etwas verändern)?</p>
<p>PS: Wie kann ich denn dann mit den neuen Variablen &quot;CreateFile&quot; aufrufen?<br />
PPS: Kann ich Dateigröße und Dateiinhalt komplett in einem Stream versenden?<br />
(oder muss ich da noch ein Trennzeichen setzen?)</p>
<p>Sorry für die vielen Fragen <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="😞"
    /> bin noch ein Newbie <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>
]]></description><link>https://www.c-plusplus.net/forum/post/514424</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/514424</guid><dc:creator><![CDATA[Maxime]]></dc:creator><pubDate>Tue, 04 May 2004 19:47:56 GMT</pubDate></item><item><title><![CDATA[Reply to Dateien über Winsock versenden on Tue, 04 May 2004 20:42:27 GMT]]></title><description><![CDATA[<p>der codeteil muss natürlich noch erweitert werden</p>
<p>sollte eine gute anleitung sein <a href="http://www.c-worker.ch" rel="nofollow">http://www.c-worker.ch</a></p>
<p>das natürlich auch <a href="http://zotteljedi.de/doc/socket-tipps.html" rel="nofollow">http://zotteljedi.de/doc/socket-tipps.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/514446</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/514446</guid><dc:creator><![CDATA[vdittrich]]></dc:creator><pubDate>Tue, 04 May 2004 20:42:27 GMT</pubDate></item><item><title><![CDATA[Reply to Dateien über Winsock versenden on Wed, 05 May 2004 12:12:52 GMT]]></title><description><![CDATA[<p>Hi vdittrich!<br />
Wollte eigentlich nur wissen, ob ich zwischen der Dateigröße<br />
und dem Dateiinhalt noch ein Trennzeichen mitsenden muss. <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>Das mit den Sockets verstehe ich ja schon alles <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/514693</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/514693</guid><dc:creator><![CDATA[Maxime]]></dc:creator><pubDate>Wed, 05 May 2004 12:12:52 GMT</pubDate></item><item><title><![CDATA[Reply to Dateien über Winsock versenden on Wed, 05 May 2004 12:55:53 GMT]]></title><description><![CDATA[<p>warum trennzeichen?, du weist duch wie gross die bytes sind.<br />
du baust ein stream auf wie du es möchtest.</p>
<p>ganz &quot;grass gesehen&quot;</p>
<pre><code class="language-cpp">struct IO
{
  int  b1;
  UINT b2;
  char s[255];
};
IO   io;
BYTE x[1024];
memcpy(x, &amp;io, sizeof(IO));   //sende x;

//empfänger
BYTE y[1024];                 //empfange y
IO   out;

memcpy(&amp;out, y, sizeof(IO));
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/514709</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/514709</guid><dc:creator><![CDATA[vdittrich]]></dc:creator><pubDate>Wed, 05 May 2004 12:55:53 GMT</pubDate></item><item><title><![CDATA[Reply to Dateien über Winsock versenden on Wed, 05 May 2004 13:12:02 GMT]]></title><description><![CDATA[<p>Also wenn ich zum Beispiel den Inhalt &quot;Halloduda&quot; einer Textdatei sende,<br />
müsste das so aussehen:</p>
<p><strong>9Halloduda</strong></p>
<p>Dem Empfänger müsste ich also &quot;sagen&quot;, dass das 1. Zeichen die Dateigröße beinhaltet. Daraufhin liest er die nächsten Zeichen und speichert sie in eine Datei.</p>
<p>Aber die zu sendende Datei ist ja nicht immer gleich groß! Mal 33KB, mal 55KB...<br />
Woher soll der Empfänger dann wissen, bis wohin der empfangene Stream die Dateigröße beinhaltet - und ab wo der eigentliche Dateiinhalt beginnt?</p>
<p>Das geht (meiner Meinung nach) nur mit Trennzeichen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /><br />
oder liege ich da falsch? <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>
]]></description><link>https://www.c-plusplus.net/forum/post/514724</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/514724</guid><dc:creator><![CDATA[Maxime]]></dc:creator><pubDate>Wed, 05 May 2004 13:12:02 GMT</pubDate></item><item><title><![CDATA[Reply to Dateien über Winsock versenden on Wed, 05 May 2004 15:51:38 GMT]]></title><description><![CDATA[<p>du liegst doch schon richtig.</p>
<pre><code class="language-cpp">//stream
struct STREAM
{
  size_t nlen;
  char*  str;
};

STREAM st;

st.str=/*zeiger auf deine dateiinhalt*/
st.nlen=strlen(st.str);               //oder anders

//dein strem hat nun die gesamte länge st.nlen+sizeof(size_t)
//abstrakt gesehen

BYTE buf[1024]; 

size_t pos=0; BYTE* b=buf;

memcpy(b, &amp;st.nlen, sizeof(size_t));
b +=sizeof(size_t);

while (pos != st.nlen)
{
  size_t n=1024-(b-buf);
  memcpy(b, str+pos, n);
  // send 1024 bytes
  pos +=n; b=buf;
}
</code></pre>
<p>es gibt natürlich noch viele andere wege, z.b ohne buffer<br />
man muss aufpassen du kannst nur int=INT_MAX zeichen auf einmal senden</p>
<p>der empfänger sieht vom prinzip gleich aus</p>
<pre><code class="language-cpp">BYTE buf[1024]; size_t pos=0;
bool blen=false; 
STREAM st={0,0};

while (blen &amp;&amp; pos != st.nlen)
{
  int n=recv(0, (char*)buf, 1024, 0);
  if (n == SOCKET_ERROR) break;
  char* b=buf;
  if (!blen)
  {
    // etwas übertrieben man hoft ja auf min 4 byte
    int len= pos+n &gt;= sizeof(size_t)? sizeof(size_t)-pos:n;
    memcpy(&amp;st.nlen+pos, buf, len);
    pos +=len;
    blen= pos != sizeof(size_t);
    if (!blen) continue; 
    // jetzt beginnt das char*
    n -=len; b +=len;
    pos=0;
  }
  if (n)
  {
    //in b mit n bytes steht deine teil (stream) datei
    //den du jetzt mit einem offset von pos wieder in deine 
    //datei schreiben kannst

    pos +=n;
  }
}
</code></pre>
<p>was besseres viel mir jetzt auch nicht ein</p>
]]></description><link>https://www.c-plusplus.net/forum/post/514883</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/514883</guid><dc:creator><![CDATA[vdittrich]]></dc:creator><pubDate>Wed, 05 May 2004 15:51:38 GMT</pubDate></item><item><title><![CDATA[Reply to Dateien über Winsock versenden on Wed, 05 May 2004 20:11:04 GMT]]></title><description><![CDATA[<p>Hi vdittrich!<br />
Sorry, dass ich noch nicht so viel von dem Code verstehe - bin leider noch ein<br />
(totaler <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    />) Newbie. Die Frage ist mir zwar fürchterlich peinlich <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="😞"
    /><br />
- aber könntest du mir sagen, wie und wo ich send und CreateFile in dem Code benutzen muss; (und ob ich den Code dann komplett in mein Projekt übernehmen kann)?</p>
<p>Habe leider noch nicht so viel Ahnung von &quot;memcpy&quot; und &quot;size_t&quot; <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>Vielen, vielen Dank im vo<strong>r</strong>aus!<br />
(Diesmal ohne Rächtschraibfähla <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    />)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/515041</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/515041</guid><dc:creator><![CDATA[Maxime]]></dc:creator><pubDate>Wed, 05 May 2004 20:11:04 GMT</pubDate></item><item><title><![CDATA[Reply to Dateien über Winsock versenden on Thu, 06 May 2004 07:50:43 GMT]]></title><description><![CDATA[<p>ich denke du solltest dich erst mal mit was einfacheren beschäftigen.</p>
<p>bei <a href="http://zotteljedi.de/doc/socket-tipps.html" rel="nofollow">http://zotteljedi.de/doc/socket-tipps.html</a> kannst du dir den kompl. source eines ftp-socket runterladen, das ist doch das was du suchst.</p>
<p>fertige lösungen wirst du von keinen hier bekommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/515168</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/515168</guid><dc:creator><![CDATA[vdittrich]]></dc:creator><pubDate>Thu, 06 May 2004 07:50:43 GMT</pubDate></item><item><title><![CDATA[Reply to Dateien über Winsock versenden on Thu, 06 May 2004 13:11:40 GMT]]></title><description><![CDATA[<p>Hab ich mir schon gedacht, dass man hier keine fertigen Codes bekommt <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>Es ist doch praktisch möglich, die Datei und die Dateigröße getrennt mit einem | in einem Stream an den Server zu senden.</p>
<p>Um die Datei und die Dateigröße jeweils in einem String abzuspeichern, kann ich doch dann eine &quot;selbstgeschriebene&quot; <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="😃"
    /> explode - Funktion benutzen:</p>
<pre><code class="language-cpp">std::string explode(char trennzeichen, std::string str, int part)
                   {
                     std::string output;
                      if (part == 0) // Wenn der erste Part gesucht wird
                                     // müssen viele komplizuierte schritte nicht gemacht werden
                         {
                              string::size_type pos1 = str.find_first_of(trennzeichen);
                              output = str.substr(0,pos1);
                         }
                         else
                         {
                             /* Als erstes muss die Anzahl der Trennzeichen in dem
                                zu Teilendem String festgestellt werden, dies geschieht in
                                einer Schleife, und wenn die Anzahl (int i) mit (int) part (-1)
                                übereinstimmt wird die Postition ausfindig gemacht.
                             */
                             int s_lengh = strlen(str.c_str());
                             int match_c = 0;

                             for (int i=0;i&lt;s_lengh;i++)
                                 {

                                   if (str[i] == trennzeichen)
                                      {
                                       match_c++;
                                        if (match_c == part)
                                           {
                                             std::string str_2 = str.substr(i+1, 1000);
                                             string::size_type pos2 = str_2.find_first_of(trennzeichen);
                                             output = str_2.substr(0,pos2);
                                           }
                                      }
                                 }
                         }
                     return output;
                   }
</code></pre>
<p>... oder nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/515336</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/515336</guid><dc:creator><![CDATA[Maxime]]></dc:creator><pubDate>Thu, 06 May 2004 13:11:40 GMT</pubDate></item><item><title><![CDATA[Reply to Dateien über Winsock versenden on Thu, 06 May 2004 14:08:39 GMT]]></title><description><![CDATA[<p>Wozu so umständlich? Wenn du die Dateigröße direkt als int am Anfang überträgst sind das doch immer 4 Bytes <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/515378</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/515378</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Thu, 06 May 2004 14:08:39 GMT</pubDate></item><item><title><![CDATA[Reply to Dateien über Winsock versenden on Thu, 06 May 2004 16:36:59 GMT]]></title><description><![CDATA[<p>Wirklich? Na, wenn das so 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="🙂"
    /><br />
- Aber mit welchen Funktionen (die nicht so kompliziert sind <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="🙄"
    />)<br />
kann ich denn dann meinen empangenen Buffer &quot;auseinander nehmen&quot;?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/515478</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/515478</guid><dc:creator><![CDATA[Maxime]]></dc:creator><pubDate>Thu, 06 May 2004 16:36:59 GMT</pubDate></item><item><title><![CDATA[Reply to Dateien über Winsock versenden on Thu, 06 May 2004 16:41:00 GMT]]></title><description><![CDATA[<p>Du liest einfach das erste Byte aus (und wandelst es wieder in einen int um - anschließend setzt du den Pointer um einen Byte weiter <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/515480</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/515480</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Thu, 06 May 2004 16:41:00 GMT</pubDate></item><item><title><![CDATA[Reply to Dateien über Winsock versenden on Sun, 09 May 2004 08:40:51 GMT]]></title><description><![CDATA[<p>Schaue dir das mal an</p>
<pre><code class="language-cpp">//receiver
	while (ret != SOCKET_ERROR)
	{
		ret = recv (*connectedSocket, Buffer,(2*sizeof(int)),NULL);

		if(ret == (2*sizeof(int)))
		{
			memcpy(&amp;iCommandNr,Buffer,sizeof(int));
			memcpy(&amp;iRecBufferSize,&amp;Buffer[sizeof(int)],sizeof(int));
			cRecBuffer = new char[iRecBufferSize];

			if(0 != iRecBufferSize)
				recv (*connectedSocket, cRecBuffer,iRecBufferSize,NULL);

			wsprintf(port,&quot;%d&quot;,*connectedSocket);
			iPos = m_This-&gt;m_listL.InsertItem(0,port);
			m_This-&gt;SetLVMStructureL(iPos,1,cPlayerName);
			m_This-&gt;SetFunctionName(iCommandNr,iPos);

			m_This-&gt;cManagerServer.SendBuffer(iCommandNr,iRecBufferSize,cRecBuffer,&amp;cSendBuffer,port);

			delete [] cRecBuffer;
			char * SendeBuffer;
			char indicator = -1;
			SendeBuffer = new char [((2*sizeof(int))+iRecBufferSize)+1];
			memcpy(SendeBuffer,&amp;iCommandNr,sizeof(int));
			memcpy(&amp;SendeBuffer[sizeof(int)],&amp;iRecBufferSize,sizeof(int));
			memcpy(&amp;SendeBuffer[(2*sizeof(int))],cSendBuffer,iRecBufferSize);
			memcpy(&amp;SendeBuffer[(2*sizeof(int))+iRecBufferSize],&amp;indicator,1);

			send(*connectedSocket,SendeBuffer,(2*sizeof(int)), NULL);

			int iSendData = 0;
			int icount = 0;
			int i = 0;
			int ISize = iRecBufferSize+1;
			bool bFirst = true;
			do
			{
				if(1024 &lt; (iRecBufferSize-icount))
					iSendData = 1024;
				else
					iSendData = ISize-icount;
				char szData = 1;
				do
				{
					i = send(*connectedSocket,&amp;SendeBuffer[(2*sizeof(int))+icount],iSendData, NULL);
					ret = recv (*connectedSocket, Buffer,1,NULL);
					if(ret != -1)
						memcpy(&amp;szData,Buffer,1);
				}while(szData == 1 &amp;&amp; ret != SOCKET_ERROR &amp;&amp; ret != 0);

				if(bFirst &amp;&amp; i != 0)
				{
					bFirst = false;
					icount--;
				}
				icount += i;
				if(i == 0)
					icount--;
			}
			while(icount != iRecBufferSize &amp;&amp; ret != SOCKET_ERROR &amp;&amp; ret != 0);
			delete [] SendeBuffer;
			delete [] cSendBuffer;
			if(FSetClientName == iCommandNr)
			{
				CString ctmp;
				ctmp = m_This-&gt;cManagerServer.GetClientName(port);
				strcpy(cPlayerName,ctmp.GetBuff(ctmp.GetLength()));
				ctmp.ReleaseBuffer();
			}
			continue;
		}

		if (ret == 0 || ret == SOCKET_ERROR)
		{
		}
	}

//Sender
DLLEXPORT virtual void Send(int ifunctionNo,int &amp;ISize,char *cSendBuffer,char **cRecBuffer)
	{
		char * TransmitBuffer;

		TransmitBuffer = new char[(2*sizeof(int)+ISize)];

		memcpy(TransmitBuffer,&amp;ifunctionNo,sizeof(int));
		memcpy(&amp;TransmitBuffer[sizeof(int)],&amp;ISize,sizeof(int));
		memcpy(&amp;TransmitBuffer[(2*sizeof(int))],cSendBuffer,ISize);

		if(0 &gt; send(ssocket, TransmitBuffer,((2*sizeof(int))+ISize),NULL))
		{
			bConnected = false;	
		}
		else
		{
			char sbuffer[8];

			recv (ssocket,sbuffer,(2*sizeof(int)), NULL);

			memcpy(&amp;ifunctionNo,sbuffer,sizeof(int));
			memcpy(&amp;ISize,&amp;sbuffer[sizeof(int)],sizeof(int));
			ISize++;

			if(0 &lt; ISize)
			{

				*cRecBuffer = new char[ISize];
				char indicator = -1;
				char *ptemp ;
				int i = 0;
				int icount = 0;
				int iReaddata = 0;
				int iSendData = 0;
				bool bFirst = true;

				memset(*cRecBuffer,0,ISize);

				char *tmp = new char [ISize];
				do
				{
					indicator = -1;
					if(1024 &lt; (ISize-icount))
						iReaddata = 1024;
					else
					{
						if( 0 == icount)
							iReaddata = ISize-icount;
						else
							iReaddata = ISize-icount;
					}
					char *crecievebuffer = new char[iReaddata];
					memset(crecievebuffer,0,iReaddata);
					i = recv(ssocket,crecievebuffer,iReaddata,NULL);
					if(i == -1)
					{
						indicator = 1;
						i = WSAGetLastError();
						i = 0;
					}
					while(-1 == send(ssocket, &amp;indicator,1,NULL));
					memcpy(&amp;tmp[icount],crecievebuffer,i);

					if(bFirst &amp;&amp; i != 0)
					{
						bFirst = false;
						icount--;
					}
					icount +=i;
					if(i == 0)
						icount--;
					ptemp = tmp;
					delete [] crecievebuffer;

				}while(ptemp[icount] != -1);
				memcpy(*cRecBuffer,tmp,ISize);
				delete [] tmp;
			}
		}
		delete [] TransmitBuffer;
	};
</code></pre>
<p>So mache ich es in einem TCP Server von mir</p>
<p>edit: sfds</p>
]]></description><link>https://www.c-plusplus.net/forum/post/516831</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/516831</guid><dc:creator><![CDATA[ichbins17]]></dc:creator><pubDate>Sun, 09 May 2004 08:40:51 GMT</pubDate></item><item><title><![CDATA[Reply to Dateien über Winsock versenden on Sun, 09 May 2004 02:33:38 GMT]]></title><description><![CDATA[<p>Igitt!!! Wie wär's mal mit Code-Tags???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/516860</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/516860</guid><dc:creator><![CDATA[WebFritzi]]></dc:creator><pubDate>Sun, 09 May 2004 02:33:38 GMT</pubDate></item><item><title><![CDATA[Reply to Dateien über Winsock versenden on Sun, 09 May 2004 08:48:22 GMT]]></title><description><![CDATA[<p>Sorry werde ab jetzt code-tags verwenden .<br />
Danke ichbins</p>
]]></description><link>https://www.c-plusplus.net/forum/post/516887</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/516887</guid><dc:creator><![CDATA[ichbins17]]></dc:creator><pubDate>Sun, 09 May 2004 08:48:22 GMT</pubDate></item></channel></rss>