<?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 winsock]]></title><description><![CDATA[<p>Ich weis das das forum voll ist mit beispielen und anderen posty die mit dem thema zu tun haben aber für mein Problem gibt es nur spärliche hinweise!<br />
Habe tutorials durchgearbeitet und verschiende Möglichkeiten schon getestet!<br />
Zu meinem Problem:<br />
Ich sende einen Http Request</p>
<pre><code>GET /news/news.txt HTTP/1.1\r\nHost: www.beispiel.de\r\n\r\n
</code></pre>
<p>aber recv empfängt dann einfach nichts! die datei/server existieren!<br />
ich hab auch ne schleife gebaut die entsprechend lange auf daten wartet aber nichts!<br />
Das komische daran ist vor 2 tagen als ich das das erste mal getestet habe funktionierte alles einwandfrei!<br />
so dachte dann das es evtl der server ist und habe mir auf funpic einen erstellt um das zu testen. Aber auch da kam das gleiche Problem!</p>
<p>ich habe kein winsock seperat als include und die lib ist auch eingebunden!</p>
<p>Was könnte alles als Ursache in Frage kommen???</p>
<p>Falls jmd den code interessiert den ich nutze</p>
<pre><code>BOOL HttpRequest(char* szHost,char* szRequest,BYTE* pReturn,UINT buflen,DWORD* pRetLen)
{
	WSADATA wsa; 
	BYTE pReadBuf[1024];
	SOCKET sSocket; 
	SOCKADDR_IN sAdress; 
	char chRequest[512];
	sprintf_s(chRequest,512,&quot;GET %s HTTP/1.1\r\nHost: %s\r\n\r\n&quot;,szRequest,szHost);
	UINT s=0,r=strlen(chRequest),bufpos = 0;
	// WSA Initialisieren
	if (WSAStartup(MAKEWORD(2,0), &amp;wsa)!=0) return FALSE; 
    // Soket einrichten
	sSocket = socket( AF_INET, SOCK_STREAM, 0); 
	if (sSocket==INVALID_SOCKET) goto error;

	// Verbindung 
	memset(&amp;sAdress, 0, sizeof(SOCKADDR_IN) );

	sAdress.sin_family = AF_INET; 
	sAdress.sin_port = htons(80);
	hostent* hp = gethostbyname(szHost);
	sAdress.sin_addr.s_addr = *(DWORD*)hp-&gt;h_addr;
	if (connect(sSocket, (SOCKADDR*)&amp;sAdress, sizeof(SOCKADDR_IN)) == SOCKET_ERROR) goto error; 

	// Setup soket for non blocking
	DWORD dwIOCTL = 1;
	if (ioctlsocket(sSocket, FIONBIO, &amp;dwIOCTL)==SOCKET_ERROR) goto error;

	// Daten senden
	do{
		s=send(sSocket, chRequest, (int)r, 0 );
	}while (s &lt; r &amp;&amp; s!=SOCKET_ERROR);
	if (s==SOCKET_ERROR) goto error;

	// Daten empfangen
	memset(pReturn, 0, buflen);
	r=0;bufpos=0;
	UINT headend=0;
	DWORD dwTime = GetTickCount();
	do{
//		if (ioctlsocket(sSocket,FIONREAD,&amp;dwIOCTL)==SOCKET_ERROR) goto error;
		r=recv(sSocket, (char*)pReadBuf,sizeof(pReadBuf), 0 );
		if (r==SOCKET_ERROR)
		{
			if (WSAGetLastError()!=WSAEWOULDBLOCK)
				goto error;
			if (((GetTickCount() - dwTime)/1000)&gt;10)
			{
				break;
			}
		}else if (r&gt;0) 
		{
			if (!headend)
				for (UINT i = 0; i &lt; r; i++)
					if (pReadBuf[i]=='\r' &amp;&amp;
						pReadBuf[i+1]=='\n' &amp;&amp;
						pReadBuf[i+2]=='\r' &amp;&amp;
						pReadBuf[i+3]=='\n')
						headend = bufpos + i + 4;

			memcpy(pReturn+bufpos,pReadBuf,r);
			bufpos+=r;
		}

	}while (r &gt; 0);

	if (headend)
	{
		memcpy(pReturn,pReturn+headend,bufpos-headend);
		memset(pReturn+bufpos-headend,0,buflen-headend);
	}
	goto cleanup;
error:
	char szMsg[64];
	int err = WSAGetLastError();
	sprintf_s(szMsg,64,&quot;%d&quot;,err);
	MessageBox(NULL,szMsg,&quot;WSA Error #&quot;,MB_ICONERROR);
	// Ende
cleanup:
	closesocket(sSocket); 
	WSACleanup(); 

	if (pRetLen) *pRetLen = bufpos;
	return (bufpos&gt;0); 
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/234772/probleme-mit-winsock</link><generator>RSS for Node</generator><lastBuildDate>Wed, 08 Apr 2026 16:08:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/234772.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 22 Feb 2009 11:44:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Probleme mit winsock on Sun, 22 Feb 2009 11:44:38 GMT]]></title><description><![CDATA[<p>Ich weis das das forum voll ist mit beispielen und anderen posty die mit dem thema zu tun haben aber für mein Problem gibt es nur spärliche hinweise!<br />
Habe tutorials durchgearbeitet und verschiende Möglichkeiten schon getestet!<br />
Zu meinem Problem:<br />
Ich sende einen Http Request</p>
<pre><code>GET /news/news.txt HTTP/1.1\r\nHost: www.beispiel.de\r\n\r\n
</code></pre>
<p>aber recv empfängt dann einfach nichts! die datei/server existieren!<br />
ich hab auch ne schleife gebaut die entsprechend lange auf daten wartet aber nichts!<br />
Das komische daran ist vor 2 tagen als ich das das erste mal getestet habe funktionierte alles einwandfrei!<br />
so dachte dann das es evtl der server ist und habe mir auf funpic einen erstellt um das zu testen. Aber auch da kam das gleiche Problem!</p>
<p>ich habe kein winsock seperat als include und die lib ist auch eingebunden!</p>
<p>Was könnte alles als Ursache in Frage kommen???</p>
<p>Falls jmd den code interessiert den ich nutze</p>
<pre><code>BOOL HttpRequest(char* szHost,char* szRequest,BYTE* pReturn,UINT buflen,DWORD* pRetLen)
{
	WSADATA wsa; 
	BYTE pReadBuf[1024];
	SOCKET sSocket; 
	SOCKADDR_IN sAdress; 
	char chRequest[512];
	sprintf_s(chRequest,512,&quot;GET %s HTTP/1.1\r\nHost: %s\r\n\r\n&quot;,szRequest,szHost);
	UINT s=0,r=strlen(chRequest),bufpos = 0;
	// WSA Initialisieren
	if (WSAStartup(MAKEWORD(2,0), &amp;wsa)!=0) return FALSE; 
    // Soket einrichten
	sSocket = socket( AF_INET, SOCK_STREAM, 0); 
	if (sSocket==INVALID_SOCKET) goto error;

	// Verbindung 
	memset(&amp;sAdress, 0, sizeof(SOCKADDR_IN) );

	sAdress.sin_family = AF_INET; 
	sAdress.sin_port = htons(80);
	hostent* hp = gethostbyname(szHost);
	sAdress.sin_addr.s_addr = *(DWORD*)hp-&gt;h_addr;
	if (connect(sSocket, (SOCKADDR*)&amp;sAdress, sizeof(SOCKADDR_IN)) == SOCKET_ERROR) goto error; 

	// Setup soket for non blocking
	DWORD dwIOCTL = 1;
	if (ioctlsocket(sSocket, FIONBIO, &amp;dwIOCTL)==SOCKET_ERROR) goto error;

	// Daten senden
	do{
		s=send(sSocket, chRequest, (int)r, 0 );
	}while (s &lt; r &amp;&amp; s!=SOCKET_ERROR);
	if (s==SOCKET_ERROR) goto error;

	// Daten empfangen
	memset(pReturn, 0, buflen);
	r=0;bufpos=0;
	UINT headend=0;
	DWORD dwTime = GetTickCount();
	do{
//		if (ioctlsocket(sSocket,FIONREAD,&amp;dwIOCTL)==SOCKET_ERROR) goto error;
		r=recv(sSocket, (char*)pReadBuf,sizeof(pReadBuf), 0 );
		if (r==SOCKET_ERROR)
		{
			if (WSAGetLastError()!=WSAEWOULDBLOCK)
				goto error;
			if (((GetTickCount() - dwTime)/1000)&gt;10)
			{
				break;
			}
		}else if (r&gt;0) 
		{
			if (!headend)
				for (UINT i = 0; i &lt; r; i++)
					if (pReadBuf[i]=='\r' &amp;&amp;
						pReadBuf[i+1]=='\n' &amp;&amp;
						pReadBuf[i+2]=='\r' &amp;&amp;
						pReadBuf[i+3]=='\n')
						headend = bufpos + i + 4;

			memcpy(pReturn+bufpos,pReadBuf,r);
			bufpos+=r;
		}

	}while (r &gt; 0);

	if (headend)
	{
		memcpy(pReturn,pReturn+headend,bufpos-headend);
		memset(pReturn+bufpos-headend,0,buflen-headend);
	}
	goto cleanup;
error:
	char szMsg[64];
	int err = WSAGetLastError();
	sprintf_s(szMsg,64,&quot;%d&quot;,err);
	MessageBox(NULL,szMsg,&quot;WSA Error #&quot;,MB_ICONERROR);
	// Ende
cleanup:
	closesocket(sSocket); 
	WSACleanup(); 

	if (pRetLen) *pRetLen = bufpos;
	return (bufpos&gt;0); 
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1667980</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1667980</guid><dc:creator><![CDATA[Gast2]]></dc:creator><pubDate>Sun, 22 Feb 2009 11:44:38 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit winsock on Sun, 22 Feb 2009 22:17:08 GMT]]></title><description><![CDATA[<p>Nimm dir mal eine Debugger und schau mal, wo dein Code stehen bleibt.</p>
<p>Diese stelle erscheint mir schon mal seltsam. Wenn nicht alles auf einmal gesendet wurde, sendest du alles nochmal. Das bedeutet, dass du unter Umständen ziemlichen Mist sendest.</p>
<pre><code class="language-cpp">do{
   s=send(sSocket, chRequest, (int)r, 0 );
}while (s &lt; r &amp;&amp; s!=SOCKET_ERROR);
</code></pre>
<p>Als weiteres nimm dir ein Programm wie <em>wireshark</em> oder <em>netcat</em> und schau mal, ob dein Programm wirklich das sendet, das du denkst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1668416</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1668416</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 22 Feb 2009 22:17:08 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit winsock on Mon, 23 Feb 2009 10:15:07 GMT]]></title><description><![CDATA[<p>Also stehen bleiben tuts nimmer dadurch das ich den socket nonblocking gemacht habe.<br />
habe auch nach einzelschritt debugging von send mit wireshark geschaut und es scheint als on die daten gesendet werden inkl. abschließenden Leerzeilen und das immer in einem durchlauf. (Ich habe mal den Request im Sendepuffer gesehen ansonsten kann ich net viel zu dem zeug was da angezeogt wird in wireshark sagen)</p>
<p>Das problem ist einfach das der server keine Daten zurücksendet!<br />
Ich habe ja nen Timeout eingebaut um evtl verzögertes senden vom server zu berücksichtigen aber selbst bei mehr als 10 sek warten kommt nix an.</p>
<p>Mir wäre ja schon sehr geholfen wenn der Server wenigstens einen fehler zurückliefert aber da kommt nix.<br />
Weiß evtl jemand unter welchen umständen ein server nichts mehr sendet nach einem request</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1668624</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1668624</guid><dc:creator><![CDATA[Gast2]]></dc:creator><pubDate>Mon, 23 Feb 2009 10:15:07 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit winsock on Mon, 23 Feb 2009 10:32:29 GMT]]></title><description><![CDATA[<p>Gast2 schrieb:</p>
<blockquote>
<p>Also stehen bleiben tuts nimmer dadurch das ich den socket nonblocking gemacht habe.</p>
</blockquote>
<p>Kann es sein, dass sich dein Programm beendet, bevor du eine Antwort erhalten kannst? Vielleicht solltest du das ganze erstmal mit blockierenden Sockets machen.</p>
<blockquote>
<p>habe auch nach einzelschritt debugging von send mit wireshark geschaut und es scheint als on die daten gesendet werden inkl. abschließenden Leerzeilen und das immer in einem durchlauf. (Ich habe mal den Request im Sendepuffer gesehen ansonsten kann ich net viel zu dem zeug was da angezeogt wird in wireshark sagen)</p>
</blockquote>
<p>Wenn das wirklich der Fall ist, und wie oben genannt dein Programm sich nicht zu früh beendet, dann kann ja nur noch das was du sendest falsch sein. Ich glaube allerdings an ersteres.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1668644</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1668644</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 23 Feb 2009 10:32:29 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit winsock on Mon, 23 Feb 2009 11:05:11 GMT]]></title><description><![CDATA[<p>Erstmal danke das du mir helfen willst/kannst!</p>
<p>Also beendet wird das programm überhaupt nicht von alleine! auch wird der Request nicht in einem Thread gestartet sondern mein app bleibt halt diese 10 sek immer regungslos bis in meinem edit feld dann halt nichts anstelle des inhaltes erscheint.</p>
<p>so starte ich den request in meinem source</p>
<pre><code>HttpRequest(&quot;ehftp.funpic.de&quot;,&quot;/news.txt&quot;,bNews,sizeof(bNews),0);
</code></pre>
<p>und wie gesagt mein request sieht dann im source während dem debuggen absolut richtig aus!</p>
<pre><code>GET /news.txt HTTP/1.1\r\nHost: ehftp.funpic.de\r\n\r\n
</code></pre>
<p>Ich kann mir das auch nicht erklären was da nicht geht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1668664</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1668664</guid><dc:creator><![CDATA[Gast2]]></dc:creator><pubDate>Mon, 23 Feb 2009 11:05:11 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit winsock on Mon, 23 Feb 2009 11:19:58 GMT]]></title><description><![CDATA[<p>Ich habe den Request mal mit <em>netcat</em> versendet. Ich bekomme als Antwort</p>
<pre><code>HTTP/1.1 301 Moved permanently
Content-Length: 0
Date: Mon, 23 Feb 2009 11:14:49 GMT
Connection: close
Location: http://ehftp.eh.funpic.de/news.txt
Content-Type: text/html
</code></pre>
<p>Dementsprechend muss irgendwas mit deinem Programm nicht stimmen. Dass die Sende-Schleife falsch ist, habe ich ja schon geschrieben.</p>
<p>Wie gesagt. Sorge mal dafür, dass deine Sockets blockieren.</p>
<p>Nimm dir einen Debugger her.</p>
<p>Der Server beendet die Verbindung bei HTTP 1.1 nicht, wenn die Daten gesendet wurden. Darum läuft dein Programm auch immer bis zum Timeout.</p>
<p>Und nochmal. Warum nicht blockierende Sockets? Krieg es erstmal mit blockierenden hin!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1668675</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1668675</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 23 Feb 2009 11:19:58 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit winsock on Mon, 23 Feb 2009 12:00:23 GMT]]></title><description><![CDATA[<p>so hab mal mein Account reaktiviert hier!<br />
also die sende schleife hab ich mal geupdatet die sieht so jetzt aus uns sollte nun auch richtig funktionieren</p>
<pre><code>// Daten senden
s=0;
do{
	s+=send(sSocket, (char*)&amp;chRequest[s], (int)r-s, 0 );
}while (s &lt; r &amp;&amp; s!=SOCKET_ERROR);
</code></pre>
<p>habe die<br />
ioctlsocket zeile zum aktivieren von non-blocking rausgenommen<br />
dafür in die send-schleife ein ioctlsocket eingebaut um zu erfassen ob daten vorhanden sind. hab auserdem die wartezeit auf 100sek erhöht! sollte ja reichen für nen server!</p>
<pre><code>do{
		//auslesen wieviel Bytes zum empfangen vorhanden sind
		if (ioctlsocket(sSocket,FIONREAD,&amp;dwIOCTL)==SOCKET_ERROR) goto error;
		if (!dwIOCTL)
		{
			if (((fGetTickCount() - dwTime)/1000)&gt;100)
			{
				break;
			}
		}else{
			dwTime = fGetTickCount();
			r=recv(sSocket, (char*)pReadBuf,sizeof(pReadBuf), 0 );
			...
</code></pre>
<p>So ich weis jetzt absolut net was jetzt der unterschied ist aber ich bekomme auf einmal daten vom server!<br />
Wie auch immer es scheint zu klappen!<br />
Danke für deine Hilfe!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1668701</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1668701</guid><dc:creator><![CDATA[Tetsuo]]></dc:creator><pubDate>Mon, 23 Feb 2009 12:00:23 GMT</pubDate></item></channel></rss>