<?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, HTTP Request, Apache reagiert merkwürdig]]></title><description><![CDATA[<p>Compiler: lcc<br />
Webserver: Apache <a href="http://2.2.xxx" rel="nofollow">2.2.xxx</a><br />
System: Windows, 32bit</p>
<p>Ich benutze ein Socket, welches über die socket() Funktion erstellt wurde.<br />
Mein Code funktioniert auch, vielmehr hab ich eine Frage wieso folgendes passiert:</p>
<p>Bei einem kleinen Request:</p>
<pre><code>strcpy(message, &quot;GET /test.php?test=test HTTP/1.1\n&quot;
                &quot;User-Agent: Hallo\n&quot;
                &quot;Host: 192.168.2.100\n&quot;
				&quot;\r\n\r\n&quot;);
</code></pre>
<p>brauche ich ca. 12 Anfragen (12 x Request schicken) bis mein Apache (<a href="http://2.2.xxx" rel="nofollow">2.2.xxx</a>) reagiert.</p>
<p>Mein PHP Script sieht so aus (nur zum Testen, es funzt - Notice beiseite).</p>
<pre><code>&lt;?php
$handle = fopen(&quot;test.txt&quot;, &quot;w&quot;);
fputs($handle, $_GET['test']);
fclose($handle);
?&gt;
</code></pre>
<p>Bei einem HTTP-GET-Request der größer ist brauche ich wiederum nur eine Anfrage, dann reagiert der Server.</p>
<p>Meine Frage nun: Ist das ein Problem bei <strong>C</strong>, Apache, PHP, HTTP - kann mir des nicht erklären. Hatte schonmal jemand so ein Prob?</p>
<p>Ich lass mich überraschen was Ihr dazu sagt, freue mich auf Antworten.</p>
<p>Hier der Client Code, wo ich mein Socket erzeuge - wobei der ja funktioniert?!</p>
<pre><code>#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;

#include &lt;winsock.h&gt;

void exitFailure(char *message) {
fprintf(stderr, &quot;\n%s\n&quot;, message);
exit(EXIT_FAILURE);
}

int main () {

/**************
Vereinbarungen
***************/

WORD wVersionRequested;
WSADATA WSAData;
SOCKET stc;

struct sockaddr_in server;
struct hostent *server_info;
unsigned long server_addr;

char *send_to_port;
int stp_len;

// default
char ip[16];
int port;
char message[700];
memset(message, 0, sizeof(message));

/*********************************************
Abfrage der benötigten Informationen (Host, Port)
**********************************************/
/*
printf(&quot;\n\t\tIP: &quot;);
scanf(&quot;%16s&quot;, &amp;ip);

printf(&quot;\t\tPort: &quot;);
scanf(&quot;%5i&quot;, &amp;port);

printf(&quot;\n\tMessage: &quot;);
scanf(&quot;%16s&quot;, &amp;message);
*/

strcpy(ip, &quot;192.168.2.100&quot;);
port = 80;

strcpy(message, &quot;GET /test.php?test=test HTTP/1.1\n&quot;
                &quot;User-Agent: Hallo\n&quot;
                &quot;Host: 192.168.2.100\n&quot;
				&quot;\r\n\r\n&quot;
				);

send_to_port = message;
stp_len = strlen(message);

printf(&quot;\n\tIP: [%s]\n\tPort: [%i]\n\tMessage: %s\n&quot;, ip, port, message);

wVersionRequested = MAKEWORD(2, 0);
if (WSAStartup(wVersionRequested, &amp;WSAData) != 0) {
exitFailure(&quot;Fehler bei WSAStartup() aufgetreten.&quot;);
}

if ((int)(stc = socket(AF_INET /* IPv4 */, SOCK_STREAM /* TCP */, 0)) &lt; 0) {
exitFailure(&quot;Fehler bei socket() aufgetreten.&quot;);
}

memset (&amp;server, 0, sizeof(server));

/* Server Informationen eintragen. */
if ((server_addr = inet_addr(ip)) != INADDR_NONE) {
memcpy((char *)&amp;server.sin_addr, &amp;server_addr, sizeof(server_addr));
} else {
server_info = gethostbyname(ip);
  if (NULL == server_info) {
  exitFailure(&quot;Fehler bei gethostbyname() aufgetreten.&quot;);
  }
memcpy((char *)&amp;server.sin_addr, server_info-&gt;h_addr, server_info-&gt;h_length);
}

server.sin_family = AF_INET /* IPv4 */;
server.sin_port = htons(port);

/* Verbindungsaufbau */
if (connect(stc, (struct sockaddr*)&amp;server, sizeof(server)) &lt; 0) {
exitFailure(&quot;Fehler bei connect() aufgetreten.&quot;);
}

/* Daten übertragen */
if (send(stc, send_to_port, stp_len, 0) != stp_len) {
exitFailure(&quot;Fehler bei send() aufgetreten.&quot;);
}

/* Garbage aufräumen */
WSACleanup();
closesocket(stc);

return EXIT_SUCCESS;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/226117/socket-http-request-apache-reagiert-merkwürdig</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Apr 2026 10:46:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/226117.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 29 Oct 2008 18:21:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Socket, HTTP Request, Apache reagiert merkwürdig on Wed, 29 Oct 2008 18:21:25 GMT]]></title><description><![CDATA[<p>Compiler: lcc<br />
Webserver: Apache <a href="http://2.2.xxx" rel="nofollow">2.2.xxx</a><br />
System: Windows, 32bit</p>
<p>Ich benutze ein Socket, welches über die socket() Funktion erstellt wurde.<br />
Mein Code funktioniert auch, vielmehr hab ich eine Frage wieso folgendes passiert:</p>
<p>Bei einem kleinen Request:</p>
<pre><code>strcpy(message, &quot;GET /test.php?test=test HTTP/1.1\n&quot;
                &quot;User-Agent: Hallo\n&quot;
                &quot;Host: 192.168.2.100\n&quot;
				&quot;\r\n\r\n&quot;);
</code></pre>
<p>brauche ich ca. 12 Anfragen (12 x Request schicken) bis mein Apache (<a href="http://2.2.xxx" rel="nofollow">2.2.xxx</a>) reagiert.</p>
<p>Mein PHP Script sieht so aus (nur zum Testen, es funzt - Notice beiseite).</p>
<pre><code>&lt;?php
$handle = fopen(&quot;test.txt&quot;, &quot;w&quot;);
fputs($handle, $_GET['test']);
fclose($handle);
?&gt;
</code></pre>
<p>Bei einem HTTP-GET-Request der größer ist brauche ich wiederum nur eine Anfrage, dann reagiert der Server.</p>
<p>Meine Frage nun: Ist das ein Problem bei <strong>C</strong>, Apache, PHP, HTTP - kann mir des nicht erklären. Hatte schonmal jemand so ein Prob?</p>
<p>Ich lass mich überraschen was Ihr dazu sagt, freue mich auf Antworten.</p>
<p>Hier der Client Code, wo ich mein Socket erzeuge - wobei der ja funktioniert?!</p>
<pre><code>#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;

#include &lt;winsock.h&gt;

void exitFailure(char *message) {
fprintf(stderr, &quot;\n%s\n&quot;, message);
exit(EXIT_FAILURE);
}

int main () {

/**************
Vereinbarungen
***************/

WORD wVersionRequested;
WSADATA WSAData;
SOCKET stc;

struct sockaddr_in server;
struct hostent *server_info;
unsigned long server_addr;

char *send_to_port;
int stp_len;

// default
char ip[16];
int port;
char message[700];
memset(message, 0, sizeof(message));

/*********************************************
Abfrage der benötigten Informationen (Host, Port)
**********************************************/
/*
printf(&quot;\n\t\tIP: &quot;);
scanf(&quot;%16s&quot;, &amp;ip);

printf(&quot;\t\tPort: &quot;);
scanf(&quot;%5i&quot;, &amp;port);

printf(&quot;\n\tMessage: &quot;);
scanf(&quot;%16s&quot;, &amp;message);
*/

strcpy(ip, &quot;192.168.2.100&quot;);
port = 80;

strcpy(message, &quot;GET /test.php?test=test HTTP/1.1\n&quot;
                &quot;User-Agent: Hallo\n&quot;
                &quot;Host: 192.168.2.100\n&quot;
				&quot;\r\n\r\n&quot;
				);

send_to_port = message;
stp_len = strlen(message);

printf(&quot;\n\tIP: [%s]\n\tPort: [%i]\n\tMessage: %s\n&quot;, ip, port, message);

wVersionRequested = MAKEWORD(2, 0);
if (WSAStartup(wVersionRequested, &amp;WSAData) != 0) {
exitFailure(&quot;Fehler bei WSAStartup() aufgetreten.&quot;);
}

if ((int)(stc = socket(AF_INET /* IPv4 */, SOCK_STREAM /* TCP */, 0)) &lt; 0) {
exitFailure(&quot;Fehler bei socket() aufgetreten.&quot;);
}

memset (&amp;server, 0, sizeof(server));

/* Server Informationen eintragen. */
if ((server_addr = inet_addr(ip)) != INADDR_NONE) {
memcpy((char *)&amp;server.sin_addr, &amp;server_addr, sizeof(server_addr));
} else {
server_info = gethostbyname(ip);
  if (NULL == server_info) {
  exitFailure(&quot;Fehler bei gethostbyname() aufgetreten.&quot;);
  }
memcpy((char *)&amp;server.sin_addr, server_info-&gt;h_addr, server_info-&gt;h_length);
}

server.sin_family = AF_INET /* IPv4 */;
server.sin_port = htons(port);

/* Verbindungsaufbau */
if (connect(stc, (struct sockaddr*)&amp;server, sizeof(server)) &lt; 0) {
exitFailure(&quot;Fehler bei connect() aufgetreten.&quot;);
}

/* Daten übertragen */
if (send(stc, send_to_port, stp_len, 0) != stp_len) {
exitFailure(&quot;Fehler bei send() aufgetreten.&quot;);
}

/* Garbage aufräumen */
WSACleanup();
closesocket(stc);

return EXIT_SUCCESS;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1606778</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606778</guid><dc:creator><![CDATA[___Gast]]></dc:creator><pubDate>Wed, 29 Oct 2008 18:21:25 GMT</pubDate></item><item><title><![CDATA[Reply to Socket, HTTP Request, Apache reagiert merkwürdig on Thu, 30 Oct 2008 08:43:55 GMT]]></title><description><![CDATA[<p>du könntest schonmal alle \n durch \r\n ersetzen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1607000</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1607000</guid><dc:creator><![CDATA[?????]]></dc:creator><pubDate>Thu, 30 Oct 2008 08:43:55 GMT</pubDate></item><item><title><![CDATA[Reply to Socket, HTTP Request, Apache reagiert merkwürdig on Thu, 30 Oct 2008 19:17:56 GMT]]></title><description><![CDATA[<p>Daran liegts nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1607420</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1607420</guid><dc:creator><![CDATA[___Gast]]></dc:creator><pubDate>Thu, 30 Oct 2008 19:17:56 GMT</pubDate></item><item><title><![CDATA[Reply to Socket, HTTP Request, Apache reagiert merkwürdig on Thu, 30 Oct 2008 19:40:55 GMT]]></title><description><![CDATA[<p>du musst ein \r\n entfernen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1607435</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1607435</guid><dc:creator><![CDATA[daran liegts nicht]]></dc:creator><pubDate>Thu, 30 Oct 2008 19:40:55 GMT</pubDate></item><item><title><![CDATA[Reply to Socket, HTTP Request, Apache reagiert merkwürdig on Thu, 30 Oct 2008 23:11:23 GMT]]></title><description><![CDATA[<p>Hallo.</p>
<p>Das kllassische Problem, das du beschreibst. Windows serialisiert deinen Code und seine Ausgaben. Das heisst, dass Windows für so'n paar Bytes noch keinen Finger krumm macht, sondern erstmal sammelt. Innerhalb einer Funktion z.B wird aus</p>
<p>send(data1);<br />
send(data2);<br />
send(data3);</p>
<p>einfach nur</p>
<p>send(data);</p>
<p>nach verlassen der Funktion. Du kannst dein Problem in einen Prozess (evtl. Thread) auslagern und diesen nach dem &quot;Senden&quot; schliessen. Das erzwingt das Senden (höchst effektiv und unelegant). Ansonsten gibt es für viele Fälle ein passendes FLUSH_DasJetzt.</p>
<p>Gruß</p>
<p>Lars</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1607593</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1607593</guid><dc:creator><![CDATA[chezzmatazz]]></dc:creator><pubDate>Thu, 30 Oct 2008 23:11:23 GMT</pubDate></item><item><title><![CDATA[Reply to Socket, HTTP Request, Apache reagiert merkwürdig on Thu, 30 Oct 2008 23:16:56 GMT]]></title><description><![CDATA[<p>mach das closesocket mal vor WSAStartup</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1607601</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1607601</guid><dc:creator><![CDATA[oO]]></dc:creator><pubDate>Thu, 30 Oct 2008 23:16:56 GMT</pubDate></item><item><title><![CDATA[Reply to Socket, HTTP Request, Apache reagiert merkwürdig on Thu, 30 Oct 2008 23:17:42 GMT]]></title><description><![CDATA[<p>sorry meinte vor WSACleanup</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1607603</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1607603</guid><dc:creator><![CDATA[oO]]></dc:creator><pubDate>Thu, 30 Oct 2008 23:17:42 GMT</pubDate></item><item><title><![CDATA[Reply to Socket, HTTP Request, Apache reagiert merkwürdig on Sun, 02 Nov 2008 18:39:13 GMT]]></title><description><![CDATA[<p>Danke für die Antworten.</p>
<p>Das Problem besteht leider weiterhin, ich habe etwas mit setsockopt() herumgespielt, aber ich bekomms nicht hin, dass er die Daten immer sofort sendet.</p>
<p>Kennt jemand eine Funktion/Code die/der diesen &quot;Flush&quot; ausführt?</p>
<p>Momentan bin ich soweit, dass ich jedesmal ein neues Socket anfordern, da dies noch etwas weniger Belastung erzeugt wie extra Threads.</p>
<p><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="😕"
    /> HeLp <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/1609067</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1609067</guid><dc:creator><![CDATA[___Gast]]></dc:creator><pubDate>Sun, 02 Nov 2008 18:39:13 GMT</pubDate></item><item><title><![CDATA[Reply to Socket, HTTP Request, Apache reagiert merkwürdig on Sun, 02 Nov 2008 22:59:37 GMT]]></title><description><![CDATA[<p>mach mal nach dem aufruf von send ein recv mit einem byte, dann kannst du dir sicher sein das der request übermittelt wurde</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1609161</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1609161</guid><dc:creator><![CDATA[ß]]></dc:creator><pubDate>Sun, 02 Nov 2008 22:59:37 GMT</pubDate></item></channel></rss>