<?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[Socket &amp;amp;&amp;amp; http]]></title><description><![CDATA[<p>hi, ich bräuchte mal wieder etwas hilfe <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>ich benötige ein programm, dass mir den inhalt einer html/oder php datei von einem server ausliest. im prinzip ist mir das geglückt aber es ist zu langsam, außerdem beansprucht es zuviele resourcen in der zeit in der es abläuft.</p>
<p>kann mir jemand helfen? das ziele wäre, dass das programm im hintergrund alle 2 sekunden die daten neu runterläd und in einer datei abspeichert.<br />
das sollte möglichst schnell gehen, aber möglichst unbemerkt ablaufen. das programm soll nicht den ganzen pc verzögern.</p>
<p>in meinem code lass ich es erst einmal zum test 100 mal ablaufen.</p>
<p>kann man es vielleicht so optimieren, dass die verbindung nicht immer neu aufgebaut werden muss?</p>
<pre><code class="language-cpp">#include &quot;stdafx.h&quot;
#include &lt;windows.h&gt;
#include &lt;string&gt;
#include &lt;stdlib.h&gt; 
#include &lt;stdio.h&gt;
#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;winsock.h&gt;
#include &lt;ctime&gt;
using namespace std;

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{

//vars netz
char* host;
char  send_buf[256];
char  recv_buf[256];
long  rc;
  SOCKET s;
  SOCKADDR_IN addr;
  WSADATA wsa;
  HOSTENT* hent;

 //datei
ofstream datei;

datei.open(&quot;save.txt&quot;,ios_base::out);
for (int repeat=0;repeat &lt; 10; repeat++)
{

WSAStartup(MAKEWORD(2,0),&amp;wsa);
addr.sin_family=AF_INET;
addr.sin_port=htons(80);

host = &quot;server.de&quot;; // serveradresse

  if((addr.sin_addr.s_addr=inet_addr(host))==INADDR_NONE)
  {
	  hent=gethostbyname(host);
	  strncpy((char*)&amp;addr.sin_addr.s_addr,hent-&gt;h_addr,4);
  }

s=socket(AF_INET,SOCK_STREAM,0);
connect(s,(SOCKADDR*)&amp;addr,sizeof(SOCKADDR));

sprintf(send_buf,&quot;GET //datei.php HTTP/1.1\nHost: server.de\n\n&quot;); //getrequest

send(s,send_buf,strlen(send_buf),0);

while((rc=recv(s,recv_buf,255,0))&gt;0)
 {
recv_buf[rc]='\0';

datei.write(recv_buf, 255); //in datei schreiben

}

closesocket(s); 

Sleep(2000); //alle 2 sek
}
datei.close();

return 0;
}
</code></pre>
<p>außerdem wie finde ich am besten heraus wann der http header zu Ende ist?</p>
<p>ich habe auch bemerkt das man wenn man bis zum dateiende liest, verzögert es mehr als wenn man eine bestimmte anzahl ausliest, das problem ist das ich ja die größe im voraus nicht weiß <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="😕"
    /></p>
<p>in den heruntergeladenen daten befinden sich immer einige zeichen die gar nicht da sein dürften, das liegt wohl das die daten nicht richtig heruntergeladen werden ??(ascii modus - gibts sowas hier?)</p>
<p>das sind jetzt sehr viele frage, ich hoffe mal das trotzdem jemand bereit is sich die mühe zu nehmen <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 />
schon mal 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>
<p>ps. ich gebe im code keine fehlermeldungen aus (falls die socket verbindung nicht klappt etc..) hab ich halt weggemacht haben ja nix mit meinem problem zu tun</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/101165/socket-amp-amp-http</link><generator>RSS for Node</generator><lastBuildDate>Wed, 29 Apr 2026 13:45:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/101165.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 13 Feb 2005 21:30:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Socket &amp;amp;&amp;amp; http on Sun, 13 Feb 2005 21:30:23 GMT]]></title><description><![CDATA[<p>hi, ich bräuchte mal wieder etwas hilfe <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>ich benötige ein programm, dass mir den inhalt einer html/oder php datei von einem server ausliest. im prinzip ist mir das geglückt aber es ist zu langsam, außerdem beansprucht es zuviele resourcen in der zeit in der es abläuft.</p>
<p>kann mir jemand helfen? das ziele wäre, dass das programm im hintergrund alle 2 sekunden die daten neu runterläd und in einer datei abspeichert.<br />
das sollte möglichst schnell gehen, aber möglichst unbemerkt ablaufen. das programm soll nicht den ganzen pc verzögern.</p>
<p>in meinem code lass ich es erst einmal zum test 100 mal ablaufen.</p>
<p>kann man es vielleicht so optimieren, dass die verbindung nicht immer neu aufgebaut werden muss?</p>
<pre><code class="language-cpp">#include &quot;stdafx.h&quot;
#include &lt;windows.h&gt;
#include &lt;string&gt;
#include &lt;stdlib.h&gt; 
#include &lt;stdio.h&gt;
#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;winsock.h&gt;
#include &lt;ctime&gt;
using namespace std;

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{

//vars netz
char* host;
char  send_buf[256];
char  recv_buf[256];
long  rc;
  SOCKET s;
  SOCKADDR_IN addr;
  WSADATA wsa;
  HOSTENT* hent;

 //datei
ofstream datei;

datei.open(&quot;save.txt&quot;,ios_base::out);
for (int repeat=0;repeat &lt; 10; repeat++)
{

WSAStartup(MAKEWORD(2,0),&amp;wsa);
addr.sin_family=AF_INET;
addr.sin_port=htons(80);

host = &quot;server.de&quot;; // serveradresse

  if((addr.sin_addr.s_addr=inet_addr(host))==INADDR_NONE)
  {
	  hent=gethostbyname(host);
	  strncpy((char*)&amp;addr.sin_addr.s_addr,hent-&gt;h_addr,4);
  }

s=socket(AF_INET,SOCK_STREAM,0);
connect(s,(SOCKADDR*)&amp;addr,sizeof(SOCKADDR));

sprintf(send_buf,&quot;GET //datei.php HTTP/1.1\nHost: server.de\n\n&quot;); //getrequest

send(s,send_buf,strlen(send_buf),0);

while((rc=recv(s,recv_buf,255,0))&gt;0)
 {
recv_buf[rc]='\0';

datei.write(recv_buf, 255); //in datei schreiben

}

closesocket(s); 

Sleep(2000); //alle 2 sek
}
datei.close();

return 0;
}
</code></pre>
<p>außerdem wie finde ich am besten heraus wann der http header zu Ende ist?</p>
<p>ich habe auch bemerkt das man wenn man bis zum dateiende liest, verzögert es mehr als wenn man eine bestimmte anzahl ausliest, das problem ist das ich ja die größe im voraus nicht weiß <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="😕"
    /></p>
<p>in den heruntergeladenen daten befinden sich immer einige zeichen die gar nicht da sein dürften, das liegt wohl das die daten nicht richtig heruntergeladen werden ??(ascii modus - gibts sowas hier?)</p>
<p>das sind jetzt sehr viele frage, ich hoffe mal das trotzdem jemand bereit is sich die mühe zu nehmen <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 />
schon mal 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>
<p>ps. ich gebe im code keine fehlermeldungen aus (falls die socket verbindung nicht klappt etc..) hab ich halt weggemacht haben ja nix mit meinem problem zu tun</p>
]]></description><link>https://www.c-plusplus.net/forum/post/722585</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/722585</guid><dc:creator><![CDATA[Noir]]></dc:creator><pubDate>Sun, 13 Feb 2005 21:30:23 GMT</pubDate></item><item><title><![CDATA[Reply to Socket &amp;amp;&amp;amp; http on Mon, 14 Feb 2005 06:58:49 GMT]]></title><description><![CDATA[<p>Im Hintergrund unbemerkt was runterladen? Keine Fehlermeldungen? Baut hier'n Skriptkiddie 'nen Virus?</p>
<p>Bye, TGGC (<a href="http://www.fh-merseburg.de/~roesch/piped/piped.php" rel="nofollow">Pipe my World.</a>)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/722711</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/722711</guid><dc:creator><![CDATA[TGGC]]></dc:creator><pubDate>Mon, 14 Feb 2005 06:58:49 GMT</pubDate></item><item><title><![CDATA[Reply to Socket &amp;amp;&amp;amp; http on Mon, 14 Feb 2005 07:30:02 GMT]]></title><description><![CDATA[<p>Beim Aufbau einer Socket-Verbindung schickt der Client erstmal ne Anfrage raus : <em>Wer heißt hier <a href="http://www.irgendwas.de" rel="nofollow">www.irgendwas.de</a>???</em><br />
Irgendein Router oder evtl. auch der Server selbst sagen dann: <em>Ich kenn ihn!</em> und gibt die IP-Adresse, bzw. MAC weiter. Anschließend wird eine Verbindung aufgebaut. Dann machst du dein GET und sagst wieder &quot;Uuund tschüss&quot;</p>
<p>Die Antwort für das Geschwindigkeitsproblem hast du dir schon selbst gegeben.</p>
<p>Aaaber wozu brauchst du das?</p>
<p>Nächstes Problem: Die Zeichen die da nicht sein sollten sind keine Fehlübertragungen - dafür sorgt schon das TCP/IP-Protokoll..<br />
Schonmal überlegt, dass im Buffer immer Müll steht, wenn er allokiert wird?<br />
Die Daten sind auch keine Strings, ergo hast du keinen Stringterminator..<br />
Du solltest also <strong>vor dem, Empfangen</strong> den Buffer mit '\0' überschreiben (siehe memset())</p>
<p>Was willst du eigentlich für Daten runterladen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/722721</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/722721</guid><dc:creator><![CDATA[DocJunioR]]></dc:creator><pubDate>Mon, 14 Feb 2005 07:30:02 GMT</pubDate></item><item><title><![CDATA[Reply to Socket &amp;amp;&amp;amp; http on Mon, 14 Feb 2005 14:00:01 GMT]]></title><description><![CDATA[<p>TGGC schrieb:</p>
<blockquote>
<p>Im Hintergrund unbemerkt was runterladen? Keine Fehlermeldungen? Baut hier'n Skriptkiddie 'nen Virus?</p>
<p>Bye, TGGC (<a href="http://www.fh-merseburg.de/~roesch/piped/piped.php" rel="nofollow">Pipe my World.</a>)</p>
</blockquote>
<p>solche unqualifizierten Äußerungen kannst du dir sparen.</p>
<p>der sinn ist einfach. in einer anderen programmiersprache hab ich einen chat programmiert. dieser arbeitet mit einer mysql datenbank. und über php lese/schreibe ich die beiträge in die db. aber bei jede verbindungsaufbau stockt der chat kurz, was natürlich nicht schön ist, wenn man z.b gerade was schreibt. also habe ich mir zu erst eine dll programmiert für diesen zweck, leider hab ich es auch nicht geschaft das während die dll die daten runterlies dass das programm weiterläuft. deshalb habe ich vor eine extra! programm zu programmieren was getrennt läuft, so dass man im chat ohne ruckler schreiben kann. (ich weiß ein chat mit mysql und php is langsam, aber es bietet auch viele vorteile.. die jetzt aber nichts zur sache tun.</p>
<p>und an TGGC, wenn du mal den code gelesen hättest wüsstest du das das programm schon funktioniert - im hintergrund. also brauche ich dafür keine hilfe klar! es geht mir nur um die geschwindigkeit.<br />
und die fehlermeldungen sind nicht da, da ich das noch ausführlich abhandeln muss, da das andere programm diese ja ausgeben soll.</p>
<p>DocJunioR, klar hast recht, aber diese zeichen tretten nur 3-4 mal auf????<br />
meist immer wenn eine leerzeile ist..? vielleicht wird das zeichen dafür falsch interpretiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/723025</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/723025</guid><dc:creator><![CDATA[Noir]]></dc:creator><pubDate>Mon, 14 Feb 2005 14:00:01 GMT</pubDate></item><item><title><![CDATA[Reply to Socket &amp;amp;&amp;amp; http on Mon, 14 Feb 2005 15:20:55 GMT]]></title><description><![CDATA[<p>1. probier doch mal WriteFile()<br />
2. die dateilänge bekommst du vom server mitgeteilt: &quot;Content-Length:&quot;<br />
3. das header ist nach dem ersten &quot;\r\n\r\n&quot; zu ende<br />
das sollte dir eigentlich reichen <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/723101</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/723101</guid><dc:creator><![CDATA[sn0b]]></dc:creator><pubDate>Mon, 14 Feb 2005 15:20:55 GMT</pubDate></item><item><title><![CDATA[Reply to Socket &amp;amp;&amp;amp; http on Mon, 14 Feb 2005 15:33:39 GMT]]></title><description><![CDATA[<p>danke, auf Content-Length hätte ich ja selber kommen können <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>
<p>das löst jedoch mein hauptproblem noch nicht, wiso die verbindung so lange dauert und warum der pc davon so beansprucht wird?? ich meine, das programm macht doch auch nichts anders als ein Browser der einen get-request schickt, oder?? und da geht es ja auch schnell und überhaupt net cpu beanspruchend.</p>
<p>---<br />
es werden immer mehr fragen.. <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="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/723113</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/723113</guid><dc:creator><![CDATA[Noir]]></dc:creator><pubDate>Mon, 14 Feb 2005 15:33:39 GMT</pubDate></item><item><title><![CDATA[Reply to Socket &amp;amp;&amp;amp; http on Mon, 14 Feb 2005 15:59:40 GMT]]></title><description><![CDATA[<p>mach mal deinen puffer grösser, dann kriegste auch mehr bytes auf einmal <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>
<p>//edit: außerdem wozu diese:<br />
#include &lt;windows.h&gt;<br />
#include &lt;string&gt;<br />
#include &lt;ctime&gt;<br />
??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/723142</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/723142</guid><dc:creator><![CDATA[sn0b]]></dc:creator><pubDate>Mon, 14 Feb 2005 15:59:40 GMT</pubDate></item><item><title><![CDATA[Reply to Socket &amp;amp;&amp;amp; http on Mon, 14 Feb 2005 16:42:00 GMT]]></title><description><![CDATA[<p>#include &lt;windows.h&gt;<br />
#include &lt;string&gt;<br />
#include &lt;ctime&gt;<br />
is ja nur ein stück vom code, hab ja nur das wichtigste gepostet, nur das womit ich mein problem habe.</p>
<p>den puffer größer zu machen bringt nix, jedenfalls mit dem code so wie ich ihn habe, ob ich jeweils nur eins oder gleich einige hundert oder mehr bringt keinen geschwindigkeitszuwachs. außerdem könnte ich ja damit leben das es nicht blitz schnell geht, aber es muss cpu schonender ablaufen. das hält doch keiner aus, wenn alle 2 sek. der pc ruckelt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/723185</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/723185</guid><dc:creator><![CDATA[Noir]]></dc:creator><pubDate>Mon, 14 Feb 2005 16:42:00 GMT</pubDate></item><item><title><![CDATA[Reply to Socket &amp;amp;&amp;amp; http on Mon, 14 Feb 2005 20:48:07 GMT]]></title><description><![CDATA[<p>ich bin hier schon richtig? oder gehört das in den c++ bereich?</p>
<p>also wenn es nicht geht, muss ich halt mit meiner alten version vorlieb nehmen.. dachte halt mann könnte das besser machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/723411</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/723411</guid><dc:creator><![CDATA[Noir]]></dc:creator><pubDate>Mon, 14 Feb 2005 20:48:07 GMT</pubDate></item><item><title><![CDATA[Reply to Socket &amp;amp;&amp;amp; http on Mon, 14 Feb 2005 21:48:00 GMT]]></title><description><![CDATA[<p>[quote=&quot;DocJunioR&quot;]<br />
Schonmal überlegt, dass im Buffer immer Müll steht, wenn er allokiert wird?<br />
Die Daten sind auch keine Strings, ergo hast du keinen Stringterminator..<br />
Du solltest also <strong>vor dem, Empfangen</strong> den Buffer mit '\0' überschreiben quote]</p>
<p>mache ich das nicht mit: recv_buf[rc]='\0'; denn nicht?</p>
<p>wenn ich mir von der php das ausgeben lassen will:</p>
<pre><code class="language-php">&lt;?php 
echo &quot;start\n&quot;;
echo &quot;Hallo\n&quot;;
echo &quot;ende\n&quot;;
?&gt;
</code></pre>
<p>müsste ja</p>
<pre><code>start
Hallo 
ende
</code></pre>
<p>dabei rauskommen.</p>
<p>es kommt aber:</p>
<blockquote>
<p>6</p>
<p>start</p>
<p>6</p>
<p>Hallo</p>
<p>5</p>
<p>ende</p>
<p>2</p>
<p>0</p>
</blockquote>
<p>raus.</p>
<p>//aber wie gesagt das is das kleinere problem</p>
]]></description><link>https://www.c-plusplus.net/forum/post/723486</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/723486</guid><dc:creator><![CDATA[Noir]]></dc:creator><pubDate>Mon, 14 Feb 2005 21:48:00 GMT</pubDate></item><item><title><![CDATA[Reply to Socket &amp;amp;&amp;amp; http on Mon, 14 Feb 2005 21:52:01 GMT]]></title><description><![CDATA[<p>Noir schrieb:</p>
<blockquote>
<p>außerdem wie finde ich am besten heraus wann der http header zu Ende ist?</p>
</blockquote>
<p>nach dem ersten auftreten von cr-lf-cr-lf</p>
<p>Noir schrieb:</p>
<blockquote>
<p>ich habe auch bemerkt das man wenn man bis zum dateiende liest, verzögert es mehr als wenn man eine bestimmte anzahl ausliest, das problem ist das ich ja die größe im voraus nicht weiß <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="😕"
    /></p>
</blockquote>
<p>man braucht i.d.r. die grösse nicht vorher zu wissen. wenn der server die verbindung schliesst hat er alles gesendet</p>
]]></description><link>https://www.c-plusplus.net/forum/post/723491</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/723491</guid><dc:creator><![CDATA[net 0]]></dc:creator><pubDate>Mon, 14 Feb 2005 21:52:01 GMT</pubDate></item><item><title><![CDATA[Reply to Socket &amp;amp;&amp;amp; http on Mon, 14 Feb 2005 22:08:15 GMT]]></title><description><![CDATA[<p>schon klar. aber test mal. lass dir mal schnell in einem konsolen fenster den inhalt einer website ausgeben. der text rattert durch, aber am schluss, nachdem schon alles da ist, braucht es noch ca. 2-4 sek. bis die verbindung zu ende ist.</p>
<p>ps. in den meisten anderen socket beispielen finde ich immer:<br />
#include &lt;winsock2.h&gt;<br />
ich verwende #include &lt;winsock.h&gt; denn ansonsten kommen bei mir immer hunderte fehlermeldungen... is mein compiler veraltet?<br />
also ich habe vc6 im include ordner gibts beide varianten..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/723504</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/723504</guid><dc:creator><![CDATA[Noir]]></dc:creator><pubDate>Mon, 14 Feb 2005 22:08:15 GMT</pubDate></item><item><title><![CDATA[Reply to Socket &amp;amp;&amp;amp; http on Mon, 14 Feb 2005 22:56:50 GMT]]></title><description><![CDATA[<p>und wenn ich z.b in einer schleife 100mal hintereinander auslesen will.. hängt es sich auf..kommt keine fehlermeldung... aber beendet nicht mehr</p>
]]></description><link>https://www.c-plusplus.net/forum/post/723529</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/723529</guid><dc:creator><![CDATA[Noir]]></dc:creator><pubDate>Mon, 14 Feb 2005 22:56:50 GMT</pubDate></item><item><title><![CDATA[Reply to Socket &amp;amp;&amp;amp; http on Tue, 15 Feb 2005 18:23:55 GMT]]></title><description><![CDATA[<p>ok... mein letzter versuch hier... bekomm ja sowiso keine antwort <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="😮"
    /></p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &lt;stdlib.h&gt; 
#include &lt;stdio.h&gt;
#include &lt;iostream&gt;
#include &lt;winsock.h&gt;
#include &lt;ctime&gt;

using namespace std;

int main(){

char* host;
char  send_buf[256];
char  recv_buf[256];
long  rc;
  SOCKET s;
  SOCKADDR_IN addr;
  WSADATA wsa;
  HOSTENT* hent;

WSAStartup(MAKEWORD(2,0),&amp;wsa);
addr.sin_family=AF_INET;
addr.sin_port=htons(80);
host = &quot;serverirgendwas.de&quot;;

  if((addr.sin_addr.s_addr=inet_addr(host))==INADDR_NONE)
  {
	  hent=gethostbyname(host);
	  strncpy((char*)&amp;addr.sin_addr.s_addr,hent-&gt;h_addr,4);
  }
int zahl=0;
int zeit;
int zeit1;
zeit1 = time(NULL);
for (int repeat=0;repeat &lt; 100; repeat++)
{
zeit = time(NULL);

s=socket(AF_INET,SOCK_STREAM,0);
connect(s,(SOCKADDR*)&amp;addr,sizeof(SOCKADDR));
sprintf(send_buf,&quot;GET //irgendwas.php HTTP/1.1\nHost: Hubsi.biz\n\n&quot;);

send(s,send_buf,strlen(send_buf),0);

while((rc=recv(s,recv_buf,1,0))&gt;0)
 {
recv_buf[rc]='\0';
cout &lt;&lt; recv_buf;	
}

cout &lt;&lt; &quot;Zeit: &quot; &lt;&lt; time(NULL)-zeit &lt;&lt; &quot; Sekunden.&quot; &lt;&lt; endl;
closesocket(s); //verbindung kappen

}
cout &lt;&lt; &quot;Gesamtzeit: &quot; &lt;&lt; time(NULL)-zeit1 &lt;&lt; &quot; Sekunden.&quot; &lt;&lt; endl;
Sleep(5000);
	return 0;

}
</code></pre>
<p>also jetzt mal als konsolenanwendungsbeispiel: das gibt jetzt 100 mal den inhalt einer php datei aus. bei mir geht das sehr schnell, aber zwischen jedem neuen verbindungsaufbau vergehen ca. 3 sek. wenn ich aber nicht bis zum ende lese geht das 1000mal schneller.<br />
wie erreiche ich das jetzt wenn ich nicht weiß wieviel daten ich bekomme wann es zu ende ist? damit ich kurz zuvor mit dem lesen aufhören kann.<br />
(Content-Length gibt mein server gar nicht zurück...)<br />
hab hier mal irgendwo was wie FIONREAD aufgeschnappt.. konnte aber nix gescheites dazu finden...</p>
<p>//so dauert es lange:<br />
while((rc=recv(s,recv_buf,1,0))&gt;0)<br />
{<br />
recv_buf[rc]='\0';<br />
cout &lt;&lt; recv_buf;<br />
}</p>
<p>;wenn ich die anzahl der bytes kenne geht es viel schneller:<br />
for (zahl=0;zahl &lt; 2000;zahl++)<br />
{<br />
rc=recv(s,recv_buf,1,0);<br />
recv_buf[rc]='\0';<br />
cout &lt;&lt; recv_buf;<br />
}</p>
<p>---<br />
und was ist jetzt mit winsock.h und winsoch2.h ??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/724250</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/724250</guid><dc:creator><![CDATA[Noir]]></dc:creator><pubDate>Tue, 15 Feb 2005 18:23:55 GMT</pubDate></item></channel></rss>