<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Probleme mit verschicken von Dateien]]></title><description><![CDATA[<p>Hallo,<br />
ich habe folgendes Problem:</p>
<p>Ich möchte eine Datei über WinSock verschicken. Dazu lese ich die Datei folgendermaßen aus:</p>
<pre><code class="language-cpp">CStdioFile *file = new CStdioFile();
	CFileStatus rStatus; 
	char *pBuf;  

if( file-&gt;Open( auslese, CFile::modeRead | CFile::typeBinary ) )//Öffnet eine datei 
    { 
        file-&gt;GetStatus(rStatus);//Zustand der datei 

        pBuf = new char [rStatus.m_size+1];//buffer auf größe der datei erweitern 

        file-&gt;Read(pBuf,rStatus.m_size);//datei einlesen 

        file-&gt;Close();//Schließe datei 

    }
</code></pre>
<p>Nun habe ich das Problem das ich pBuf in ein String schreiben muss, weiß allerdings nicht wie ich das machen soll. Ich weiß halt nicht ob pBuf binär oder hex ist.<br />
Muss es dann auf der anderen Seite natürlich wieder so umwandeln, das ich die Datei problemlos schreiben kann.</p>
<p>Vielen Dank an euch.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/157641/probleme-mit-verschicken-von-dateien</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Jul 2026 08:56:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/157641.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 28 Aug 2006 09:21:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Probleme mit verschicken von Dateien on Mon, 28 Aug 2006 10:12:52 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe folgendes Problem:</p>
<p>Ich möchte eine Datei über WinSock verschicken. Dazu lese ich die Datei folgendermaßen aus:</p>
<pre><code class="language-cpp">CStdioFile *file = new CStdioFile();
	CFileStatus rStatus; 
	char *pBuf;  

if( file-&gt;Open( auslese, CFile::modeRead | CFile::typeBinary ) )//Öffnet eine datei 
    { 
        file-&gt;GetStatus(rStatus);//Zustand der datei 

        pBuf = new char [rStatus.m_size+1];//buffer auf größe der datei erweitern 

        file-&gt;Read(pBuf,rStatus.m_size);//datei einlesen 

        file-&gt;Close();//Schließe datei 

    }
</code></pre>
<p>Nun habe ich das Problem das ich pBuf in ein String schreiben muss, weiß allerdings nicht wie ich das machen soll. Ich weiß halt nicht ob pBuf binär oder hex ist.<br />
Muss es dann auf der anderen Seite natürlich wieder so umwandeln, das ich die Datei problemlos schreiben kann.</p>
<p>Vielen Dank an euch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1125953</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1125953</guid><dc:creator><![CDATA[Twinzz]]></dc:creator><pubDate>Mon, 28 Aug 2006 10:12:52 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit verschicken von Dateien on Mon, 28 Aug 2006 10:24:58 GMT]]></title><description><![CDATA[<p>Die Frage ist eher: Wer lauscht auf der anderen Seite und darfst Du alle Zeichen über diesen Port versenden, odergibt es ein Protokoll!</p>
<p>Wenn Du nicht weißt was für Daten da drin sind, könntest Du das ganze ja als Base64 packen und dann hast Du reinen Ascii Text!<br />
Das ganze lässt sich auch schnell wieder zrückverwandeln. Bläht halt nur etwas auf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1125997</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1125997</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Mon, 28 Aug 2006 10:24:58 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit verschicken von Dateien on Mon, 28 Aug 2006 10:31:35 GMT]]></title><description><![CDATA[<p>mit dem Port gibt es keinerlei Probleme und die Dateien sind MPEG Dateien. Ich verschicke ja auch die Filegröße usw. vorher weg und das funktioniert einwandfrei. Ich hatte vorher meinen pBuf einfach in eine CString Variable reingeschrieben, das allerdings nicht funktioniert. Ich habe festgestellt, das ich pBuf in ein String umwandeln muss. Nur wie mache ich das am Besten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1126000</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1126000</guid><dc:creator><![CDATA[Twinzz]]></dc:creator><pubDate>Mon, 28 Aug 2006 10:31:35 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit verschicken von Dateien on Mon, 28 Aug 2006 16:34:20 GMT]]></title><description><![CDATA[<p>Wieso musst Du den pBuf in einen String umwandeln? Wie kommst Du darauf?<br />
Zudem ist Dein pBuf bereits ein Buffer mit Daten vom Typ char*, wenn es sich um einen MPEG Datei handelt dann sind da sicherlich auch nicht Ascii Zeichen dabei, aber das sollte nichts machen.</p>
<p>Wie versendest Du denn?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1126288</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1126288</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Mon, 28 Aug 2006 16:34:20 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit verschicken von Dateien on Tue, 29 Aug 2006 07:25:11 GMT]]></title><description><![CDATA[<p>ich versende über winsock...das heißt ich versende die Daten als Strings und wandel sie dann gegebenenfalls auf der anderen Seite um. Sobald ich pBuf in ein String reinschreibe, kann das Programm auf der anderen Seite mit den Daten nichts anfangen. Habs auch mal ohne verschicken probiert. Wenn ich direkt pBuf verwende klappt die Dateierstellung, sobald ich den Inhalt einfach in ein String schreibe, funktioniert es nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1126567</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1126567</guid><dc:creator><![CDATA[Twinzz]]></dc:creator><pubDate>Tue, 29 Aug 2006 07:25:11 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit verschicken von Dateien on Tue, 29 Aug 2006 07:47:58 GMT]]></title><description><![CDATA[<p>Twinzz schrieb:</p>
<blockquote>
<p>ich versende über winsock...das heißt ich versende die Daten als Strings und wandel sie dann gegebenenfalls auf der anderen Seite um. Sobald ich pBuf in ein String reinschreibe, kann das Programm auf der anderen Seite mit den Daten nichts anfangen. Habs auch mal ohne verschicken probiert. Wenn ich direkt pBuf verwende klappt die Dateierstellung, sobald ich den Inhalt einfach in ein String schreibe, funktioniert es nicht.</p>
</blockquote>
<p>Das versteheich nicht. Wo steht das ich über send nur Text Daten versenden darf. Bei der send funktion wird ein Puffer übergeben und eine Länge...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1126588</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1126588</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Tue, 29 Aug 2006 07:47:58 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit verschicken von Dateien on Tue, 29 Aug 2006 08:06:51 GMT]]></title><description><![CDATA[<p>Genau das habe ich auch vorher gedacht, allerings funktioniert es leider nicht. auch wenn ich pBuf direkt verschicke, kann mir mein Empfänger nicht die Datei wieder zusammenstellen. Habe den Fehler soweit ausgegrenzt, das er mir vor schreiben der Datei eine Fehlermeldung gibt. &quot;Debug Assertion Failed!&quot;<br />
Ich weiß auch nicht mehr weiter...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1126604</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1126604</guid><dc:creator><![CDATA[Twinzz]]></dc:creator><pubDate>Tue, 29 Aug 2006 08:06:51 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit verschicken von Dateien on Tue, 29 Aug 2006 08:10:26 GMT]]></title><description><![CDATA[<p>Mir ist gerade eingefallen, das ich ja auch beim Empfänger die Daten erstmal in ein String reinschreibe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /><br />
Ich hoffe, das das die Lösung ist....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1126606</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1126606</guid><dc:creator><![CDATA[Twinzz]]></dc:creator><pubDate>Tue, 29 Aug 2006 08:10:26 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit verschicken von Dateien on Tue, 29 Aug 2006 08:29:49 GMT]]></title><description><![CDATA[<p>Es funktioniert trotzdem nicht...hier ist mal der Code beim Empfänger. Vielleicht sehe ich vor lauter Bäumen den Wald nicht mehr...</p>
<pre><code class="language-cpp">char *pBuf = new char[1025];
	int iBufSize = 1024;

	int iRcvd;

	CString strRecvd;

	//Nachrichten empfangen
	iRcvd = m_sConnectSocket.Receive(pBuf, iBufSize);

	//Wurde etws empfangen?
	if (iRcvd == SOCKET_ERROR)
	{
	}
	else
	{

		pBuf[iRcvd] = NULL;
		// Nachricht in einen CString kopieren
		strRecvd = pBuf;

		if(strRecvd == &quot;FILENAME&quot;)
		{
			m_sFileName = m_cstrReceived;
			m_cstrReceived = &quot;&quot;;
			strRecvd = &quot;&quot;;
			pBuf=&quot;&quot;;

			AfxMessageBox(m_sFileName);
		}

		if(strRecvd == &quot;FILESIZE&quot;)
		{

			AfxMessageBox(m_cstrReceived);
			FileSize = atoi(m_cstrReceived);
			m_cstrReceived = &quot;&quot;;
			strRecvd = &quot;&quot;;
			pBuf=&quot;&quot;;
			AfxMessageBox(&quot;Filesize empfangen&quot;);
		}

		if(strRecvd == &quot;END&quot;)
		{
			AfxMessageBox(&quot;File empfangen&quot;);
			//OnCreateEssanceFile(pBuf);

			AfxMessageBox(&quot; File wird erstellt&quot;);
			CFile newFile;
			CString FilePath = m_sPathName + &quot;\\&quot; + m_sFileName;

			AfxMessageBox(FilePath);

			newFile.Open(FilePath, CFile::modeCreate | CFile::modeWrite );

			AfxMessageBox(&quot;File geöffnet&quot;);

			newFile.Write(pBuf, FileSize);

			AfxMessageBox(&quot;File geschrieben&quot;);

			newFile.Close();

			m_cstrReceived=&quot;&quot;;
			strRecvd = &quot;&quot;;

		}
		else
		{
		m_cstrReceived += strRecvd;
		}

		//AfxMessageBox(&quot;File erstellt&quot;);

		UpdateData(FALSE);
	}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1126624</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1126624</guid><dc:creator><![CDATA[Twinzz]]></dc:creator><pubDate>Tue, 29 Aug 2006 08:29:49 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit verschicken von Dateien on Tue, 29 Aug 2006 12:55:07 GMT]]></title><description><![CDATA[<p>Hmm...etwas Code wäre da noch interessant. Wie sendest du denn?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1126827</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1126827</guid><dc:creator><![CDATA[Netgearopfer]]></dc:creator><pubDate>Tue, 29 Aug 2006 12:55:07 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit verschicken von Dateien on Tue, 29 Aug 2006 19:38:16 GMT]]></title><description><![CDATA[<p>ich sende über winsock...</p>
<pre><code class="language-cpp">send(clients[ClientMeta],m_cstrMetadaten,(int)strlen(m_cstrMetadaten),0);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1127177</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1127177</guid><dc:creator><![CDATA[Twinzz]]></dc:creator><pubDate>Tue, 29 Aug 2006 19:38:16 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit verschicken von Dateien on Wed, 30 Aug 2006 07:06:57 GMT]]></title><description><![CDATA[<p>Du kannst nicht 100% davon ausgehen, dass ein Block, der mit send gesendet wird in einem einzigen Receive ankommen.</p>
<p>Weiterhin müsstest Du Dir ein eigenes Protokoll ausdenken. Zudem werden binäre Daten übertragen. CString arbeitet aber mit 0 terminierten Strings. Wenn nun also eine 0 in Deinen gesendeten Daten vorkommt so würde diese den String beenden.</p>
<p>So wie Du Deinen Code hier zeigst wird es nie funktionieren!</p>
<p>Also:<br />
1. Protokoll überlegen.<br />
2. Klar sein, dass der gesendete Datenstream in einem Receive eben auch in mehreren Blöcken ankommen kann.<br />
3. Mit Puffern arbeiten (nicht mit CString), und immer darauf achten, dass die gesendete Länge einzelner Blöcke bekannt ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1127326</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1127326</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 30 Aug 2006 07:06:57 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit verschicken von Dateien on Wed, 30 Aug 2006 07:42:58 GMT]]></title><description><![CDATA[<p>Vielen Dank schonmal für deine Hinweise. Ist mir auch vorhin in Gedanken gekommen, die empfangen Daten einfach nicht in Strings zu schreiben. Ich verschicke nach dem versenden des Files immer ein END und überprüfe auf der anderen Seite ob dieser gerade empfangen wird, wenn nicht, wird alles in einen String kopiert, wenn ja, wird der String in einen anderen String kopiert und so filtere ich meine Daten.<br />
kann man zwei char Variablen eigentlich auch einfachso zusammenstzen?...ansonsten muss ich mit der Filegröße arbeiten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1127352</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1127352</guid><dc:creator><![CDATA[Twinzz]]></dc:creator><pubDate>Wed, 30 Aug 2006 07:42:58 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit verschicken von Dateien on Thu, 31 Aug 2006 08:50:25 GMT]]></title><description><![CDATA[<p>Wie schaffe ich es nun, das Problem mit der 0 umzugehen? Sobald ich versuche mein pBuf zu versenden, kommt auf der anderen Seite nichts an, weil er anscheinend nichts verschickt. die ersten 3 Zeichen von MPEG Dateien sind nämlich 000...ich bin echt langsam am verzweifeln... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1128161</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1128161</guid><dc:creator><![CDATA[Twinzz]]></dc:creator><pubDate>Thu, 31 Aug 2006 08:50:25 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit verschicken von Dateien on Thu, 31 Aug 2006 10:07:24 GMT]]></title><description><![CDATA[<p>Es ist doch schon mehrfach geschrieben worden. Arbeite mit festen Puffergrößen.<br />
Solange Du auf der Sendeseite etwa strlen einsetzt kann es nicht gehen!</p>
<p>Dein Code:<br />
send(clients[ClientMeta],m_cstrMetadaten,(int)strlen(m_cstrMetadaten),0);<br />
kann nicht gehen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1128232</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1128232</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Thu, 31 Aug 2006 10:07:24 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit verschicken von Dateien on Fri, 01 Sep 2006 05:45:24 GMT]]></title><description><![CDATA[<p>Du brauchst garnichts in einen String umwandeln.</p>
<p>Du kannst auch den Buffer als z.B.<br />
byte* data = new byte[1025];</p>
<p>definieren.</p>
<p>Receive brauchst du in einer Schleife. Diese wird erst beendet wenn keine Daten mehr am Socket liegen.<br />
Die Daten am Socket werden ja nicht in einem Übertragen sondern in Packeten gesteckt.<br />
Es kann dan sein das du bereits Daten vorliegen hast aber eben noch nicht alle.<br />
Aber Grundsätzlich ist String CString oder was auch immer für eine string quatsch.<br />
Man kann auch BIN übertragen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1128787</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1128787</guid><dc:creator><![CDATA[Unix-Tom]]></dc:creator><pubDate>Fri, 01 Sep 2006 05:45:24 GMT</pubDate></item></channel></rss>