<?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[WinInet: Daten werden nicht immer empfangen]]></title><description><![CDATA[<p>Hallo zusammen,<br />
ich habe ein Programm geschrieben welches einen HTTP-Request an einen Server via WinInet absetzt. Anschliessend möchte ich die empfangenen Daten auswerten.<br />
Nun kommt es aber manchmal vor, dass der Server mir unter schwerer Last zwar die Daten schickt, ich sie jedoch nicht empfange.<br />
Folgendes ist mein Code um die Verbindung aufzubauen:</p>
<pre><code class="language-cpp">int sendDataMessage(char *message, CONFIGURATION *config){
	char ch = NULL;
	Initialize = NULL;
	Connection = NULL;
	File = NULL;

	Initialize = InternetOpen(TEXT(&quot;Text Text&quot;), INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);

	if(Initialize == NULL){
		return 0;
	}

	Connection = InternetConnect(Initialize, TEXT(config-&gt;server), atoi(config-&gt;port),
	NULL,NULL,INTERNET_SERVICE_HTTP,0,0);

	if(Connection == NULL){
		return 0;
	}
	//check if port equals defined server ssl port
	if(strcmp(config-&gt;port, DEFINED_SSL_PORT) == 0){
		File = HttpOpenRequest(Connection,NULL,TEXT(message),
			NULL,NULL,NULL,
			INTERNET_FLAG_IGNORE_CERT_CN_INVALID |
			INTERNET_FLAG_IGNORE_CERT_DATE_INVALID |
			INTERNET_FLAG_SECURE,
			0);
	} else {
		File = HttpOpenRequest(Connection,NULL,TEXT(message),
			NULL,NULL,NULL,
			0,
			0);
	}

	if(File == NULL){
		return 0;
	}

	if(!HttpSendRequest(File,NULL,0,NULL,0)) {
		DWORD error = GetLastError();
		if(error == ERROR_INTERNET_INVALID_CA){
			File =  setIgnoreFlags(File);
			if(!HttpSendRequest(File,NULL,0,NULL,0)){
				return 0;
			}
		}
	}

	return 0;
}
</code></pre>
<p>Und hier lese ich die Daten:</p>
<pre><code class="language-cpp">while(InternetReadFile(File,receive_buffer,SOCKET_RECEIVE_BUFFER-1,&amp;dwBytes)){
		if(dwBytes==0){
			break;
		}
		user_string = (char*) realloc(user_string, user_string_length + dwBytes + 1);

		user_string[user_string_length] = '\0';
		receive_buffer[dwBytes] = '\0';
		user_string_length = user_string_length + dwBytes;

		if(user_string == NULL){
			MessageBox(NULL, &quot;Could not allocate enough memory&quot;, &quot;Title&quot;, MB_OK);
			return NULL;
		}
		strcat(user_string, receive_buffer);

	}
</code></pre>
<p>Kann es sein, dass die Verbindung frühzeitig abgebrochen wird? Kann ich den Timeout irgendwo setzen?<br />
Ich habe in MSDN nachgeschaut, jedoch keine Option für ein Delay entdeckt. Könnte es an der SSL Verbindung liegen?</p>
<p>Wie gesagt, der Fehler tritt nur unter hoher Last auf, solange der Server realtiv schwach belasted ist funktioniert alles.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/186683/wininet-daten-werden-nicht-immer-empfangen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 05 Jul 2026 11:01:14 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/186683.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 11 Jul 2007 11:31:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to WinInet: Daten werden nicht immer empfangen on Wed, 11 Jul 2007 11:31:31 GMT]]></title><description><![CDATA[<p>Hallo zusammen,<br />
ich habe ein Programm geschrieben welches einen HTTP-Request an einen Server via WinInet absetzt. Anschliessend möchte ich die empfangenen Daten auswerten.<br />
Nun kommt es aber manchmal vor, dass der Server mir unter schwerer Last zwar die Daten schickt, ich sie jedoch nicht empfange.<br />
Folgendes ist mein Code um die Verbindung aufzubauen:</p>
<pre><code class="language-cpp">int sendDataMessage(char *message, CONFIGURATION *config){
	char ch = NULL;
	Initialize = NULL;
	Connection = NULL;
	File = NULL;

	Initialize = InternetOpen(TEXT(&quot;Text Text&quot;), INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);

	if(Initialize == NULL){
		return 0;
	}

	Connection = InternetConnect(Initialize, TEXT(config-&gt;server), atoi(config-&gt;port),
	NULL,NULL,INTERNET_SERVICE_HTTP,0,0);

	if(Connection == NULL){
		return 0;
	}
	//check if port equals defined server ssl port
	if(strcmp(config-&gt;port, DEFINED_SSL_PORT) == 0){
		File = HttpOpenRequest(Connection,NULL,TEXT(message),
			NULL,NULL,NULL,
			INTERNET_FLAG_IGNORE_CERT_CN_INVALID |
			INTERNET_FLAG_IGNORE_CERT_DATE_INVALID |
			INTERNET_FLAG_SECURE,
			0);
	} else {
		File = HttpOpenRequest(Connection,NULL,TEXT(message),
			NULL,NULL,NULL,
			0,
			0);
	}

	if(File == NULL){
		return 0;
	}

	if(!HttpSendRequest(File,NULL,0,NULL,0)) {
		DWORD error = GetLastError();
		if(error == ERROR_INTERNET_INVALID_CA){
			File =  setIgnoreFlags(File);
			if(!HttpSendRequest(File,NULL,0,NULL,0)){
				return 0;
			}
		}
	}

	return 0;
}
</code></pre>
<p>Und hier lese ich die Daten:</p>
<pre><code class="language-cpp">while(InternetReadFile(File,receive_buffer,SOCKET_RECEIVE_BUFFER-1,&amp;dwBytes)){
		if(dwBytes==0){
			break;
		}
		user_string = (char*) realloc(user_string, user_string_length + dwBytes + 1);

		user_string[user_string_length] = '\0';
		receive_buffer[dwBytes] = '\0';
		user_string_length = user_string_length + dwBytes;

		if(user_string == NULL){
			MessageBox(NULL, &quot;Could not allocate enough memory&quot;, &quot;Title&quot;, MB_OK);
			return NULL;
		}
		strcat(user_string, receive_buffer);

	}
</code></pre>
<p>Kann es sein, dass die Verbindung frühzeitig abgebrochen wird? Kann ich den Timeout irgendwo setzen?<br />
Ich habe in MSDN nachgeschaut, jedoch keine Option für ein Delay entdeckt. Könnte es an der SSL Verbindung liegen?</p>
<p>Wie gesagt, der Fehler tritt nur unter hoher Last auf, solange der Server realtiv schwach belasted ist funktioniert alles.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1323002</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1323002</guid><dc:creator><![CDATA[dadevelopa]]></dc:creator><pubDate>Wed, 11 Jul 2007 11:31:31 GMT</pubDate></item><item><title><![CDATA[Reply to WinInet: Daten werden nicht immer empfangen on Thu, 12 Jul 2007 07:13:17 GMT]]></title><description><![CDATA[<p>Weiss niemand wie das geht? Was ist mit synchronen und asynchronen Requests, ich habe zwar gehört das die asynchronen recht schlecht funktionieren sollen...</p>
<p>Wie würde man es denn mit Sockets machen um auf Daten zu warten? Gibt es eine vergleichbare Möglichkeit oder vielleicht eine eigene Funktion mit welcher man solche Attribute setzen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1323552</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1323552</guid><dc:creator><![CDATA[dadevelopa]]></dc:creator><pubDate>Thu, 12 Jul 2007 07:13:17 GMT</pubDate></item></channel></rss>