<?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[[Winsock]TCP Fileserver Probleme bei großen Dateien]]></title><description><![CDATA[<p>Hi,<br />
der untere Code macht mir Probleme. Es geht um einen TCP Fileserver, es klapt soweit alles, nur nicht beim übertragen großer Dateien(ca. &gt; 50MB). Dann bekomme ich vom recv den Fehler:</p>
<blockquote>
<p>WSAENOBUFS 10055<br />
No buffer space available.<br />
An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full.</p>
</blockquote>
<p>Es deutet ja darauf hin das irgendwas mit dem buffer nicht stimmt.<br />
Die Dateilänge ist die anzahl bytes die vom server eingelesen wurden.</p>
<p>Jetzt erzeugt eine 50MB Datei ein 52428800 großes array, könnte es daran liegen?<br />
Beim Server lese ich die Datei aber genau mit der gleichen Methode ein und da gibt es keine Probleme...</p>
<pre><code class="language-cpp">// Ein Ausschnitt des Clients

char *buffer(0);
buffer = new char [dateilänge];

bytesRecv = recv( hSock, buffer, dateilänge, 0 );
if(bytesRecv == SOCKET_ERROR) cerr &lt;&lt; &quot;Fehler bei Datei_recv(): &quot; &lt;&lt; WSAGetLastError() &lt;&lt; endl;

Datei.write(buffer, dateilänge);
cout &lt;&lt; &quot;Fertig&quot; &lt;&lt; endl;

delete[] buffer;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/199881/winsock-tcp-fileserver-probleme-bei-großen-dateien</link><generator>RSS for Node</generator><lastBuildDate>Tue, 28 Apr 2026 21:58:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/199881.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 08 Dec 2007 00:29:57 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [Winsock]TCP Fileserver Probleme bei großen Dateien on Sat, 08 Dec 2007 00:29:57 GMT]]></title><description><![CDATA[<p>Hi,<br />
der untere Code macht mir Probleme. Es geht um einen TCP Fileserver, es klapt soweit alles, nur nicht beim übertragen großer Dateien(ca. &gt; 50MB). Dann bekomme ich vom recv den Fehler:</p>
<blockquote>
<p>WSAENOBUFS 10055<br />
No buffer space available.<br />
An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full.</p>
</blockquote>
<p>Es deutet ja darauf hin das irgendwas mit dem buffer nicht stimmt.<br />
Die Dateilänge ist die anzahl bytes die vom server eingelesen wurden.</p>
<p>Jetzt erzeugt eine 50MB Datei ein 52428800 großes array, könnte es daran liegen?<br />
Beim Server lese ich die Datei aber genau mit der gleichen Methode ein und da gibt es keine Probleme...</p>
<pre><code class="language-cpp">// Ein Ausschnitt des Clients

char *buffer(0);
buffer = new char [dateilänge];

bytesRecv = recv( hSock, buffer, dateilänge, 0 );
if(bytesRecv == SOCKET_ERROR) cerr &lt;&lt; &quot;Fehler bei Datei_recv(): &quot; &lt;&lt; WSAGetLastError() &lt;&lt; endl;

Datei.write(buffer, dateilänge);
cout &lt;&lt; &quot;Fertig&quot; &lt;&lt; endl;

delete[] buffer;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1416854</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1416854</guid><dc:creator><![CDATA[Mitbewohner]]></dc:creator><pubDate>Sat, 08 Dec 2007 00:29:57 GMT</pubDate></item><item><title><![CDATA[Reply to [Winsock]TCP Fileserver Probleme bei großen Dateien on Sat, 08 Dec 2007 00:47:18 GMT]]></title><description><![CDATA[<p>übergib eine kleineren puffer</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1416856</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1416856</guid><dc:creator><![CDATA[:rolleyes:]]></dc:creator><pubDate>Sat, 08 Dec 2007 00:47:18 GMT</pubDate></item><item><title><![CDATA[Reply to [Winsock]TCP Fileserver Probleme bei großen Dateien on Sat, 08 Dec 2007 10:19:01 GMT]]></title><description><![CDATA[<p>Kleiner geht schlecht, ich brauch ja irgendwie die komplette Anzahl an bytes...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1416924</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1416924</guid><dc:creator><![CDATA[Mitbewohner]]></dc:creator><pubDate>Sat, 08 Dec 2007 10:19:01 GMT</pubDate></item><item><title><![CDATA[Reply to [Winsock]TCP Fileserver Probleme bei großen Dateien on Sat, 08 Dec 2007 10:56:01 GMT]]></title><description><![CDATA[<p>Nein, du kannst auch nen kleineren Puffer angeben und recv() mehrfach aufrufen.<br />
recv() musst du laut doku ggf. sowieso mehrfach aufrufen:</p>
<p>msdn schrieb:</p>
<blockquote>
<p>calling recv <strong>will return as much data as is currently available</strong> — up to the size of the buffer specified.</p>
</blockquote>
<p>Sprich: Der Rückgabewert von recv() entspricht nicht unbedingt auch der angegebenen Puffer-Länge.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1416944</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1416944</guid><dc:creator><![CDATA[geeky]]></dc:creator><pubDate>Sat, 08 Dec 2007 10:56:01 GMT</pubDate></item></channel></rss>