<?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[Loopback-Packete werden teileweise verschluckt]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich Arbeite gerade an einem Serverprogramm welches mehrere Clienten verwaltet.<br />
Um nun auf mehrer Verbindungen reagieren zu können, benutzer ich ein &quot;FD_SET&quot;.<br />
Wenn ich den Server dann starte Funktioniers alles ganz gut, wenn ich aber mehrer Befehle direckt hintereinander zu dem Server auf der &quot;127.0.0.1 (Loopback)&quot;-Adresse sende, dann bekommt der Server nur den ersten Befehl. Die anderen Befehle werden Praktisch &quot;verschluck&quot;. Wenn ich aber von einem anderen Recher diese Befehle sende, kommen sie komischer weise an.<br />
Liegt das Problem vieleicht daran das WindowsXP die Packete an die Loopback-Adresse nicht so schnell verarbeiten kann und sie somit &quot;verschluckt&quot;?</p>
<p>Hier die Routine zum epmfangen der Daten auf den Sockts:</p>
<pre><code>while(abbruchbedingung) 
	{

			FD_ZERO(&amp;fdSet); // FD_SET leeren
			FD_SET(acceptSocket,&amp;fdSet);	 // Den Socket der verbindungen annimmt hinzufügen

			// alle gültigen Client-Sockets hinzufügen (nur die, die nicht INVALID_SOCKET sind)
			FD_ARRAY_SET(clients, MAX_CLIENTS, fdSet);

			rc=select(0,&amp;fdSet,NULL,NULL,NULL); //auf Ankommende Daten warten
			PrintError(rc);

			// acceptSocket is im fd_set? =&gt; verbindung annehmen (sofern es platz hat)
			if(FD_ISSET(acceptSocket,&amp;fdSet)) 
			{
				rc = AcceptClient(acceptSocket, clients, MAX_CLIENTS);
				if(rc &gt;= 0)
				{
					//weitere Initialisierungscode......
				}

			}

			// prüfen wlecher client sockets im fd_set sind
			for(i=0;i&lt;MAX_CLIENTS;i++) 
			{
				if(clients[i]!=INVALID_SOCKET)
				{
					if(FD_ISSET(clients[i],&amp;fdSet))
					{
						//Am CLientem Liegen Daten an, also werden sie abgerufen
						rc=recv(clients[i],buf,INC_BUFFER_SIZE,0);
						// prüfen ob die verbindung geschlossen wurde oder ein fehler auftrat
						if(rc==0 || rc==SOCKET_ERROR)
						{
							printf(&quot;Client %d hat die Verbindung geschlossen\n&quot;,i);
							closesocket(clients[i]); // socket schliessen
							//CLode vom Clienten Aufrufen
							clients[i]=INVALID_SOCKET; // seinen platz wieder freigeben
							//Weiterer Code...

						} 
						else
						{
							//Keine Fehler...also das Empfangende verarbeiten.
						}
					}
				}
			}

	}
</code></pre>
<p>Oder liegt das Problem einfach daran, das ich etwas vergessen habe zu machen?</p>
<p>Mfg Stu</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/120940/loopback-packete-werden-teileweise-verschluckt</link><generator>RSS for Node</generator><lastBuildDate>Sun, 05 Jul 2026 16:08:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/120940.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 17 Sep 2005 23:12:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Loopback-Packete werden teileweise verschluckt on Sun, 18 Sep 2005 10:36:41 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich Arbeite gerade an einem Serverprogramm welches mehrere Clienten verwaltet.<br />
Um nun auf mehrer Verbindungen reagieren zu können, benutzer ich ein &quot;FD_SET&quot;.<br />
Wenn ich den Server dann starte Funktioniers alles ganz gut, wenn ich aber mehrer Befehle direckt hintereinander zu dem Server auf der &quot;127.0.0.1 (Loopback)&quot;-Adresse sende, dann bekommt der Server nur den ersten Befehl. Die anderen Befehle werden Praktisch &quot;verschluck&quot;. Wenn ich aber von einem anderen Recher diese Befehle sende, kommen sie komischer weise an.<br />
Liegt das Problem vieleicht daran das WindowsXP die Packete an die Loopback-Adresse nicht so schnell verarbeiten kann und sie somit &quot;verschluckt&quot;?</p>
<p>Hier die Routine zum epmfangen der Daten auf den Sockts:</p>
<pre><code>while(abbruchbedingung) 
	{

			FD_ZERO(&amp;fdSet); // FD_SET leeren
			FD_SET(acceptSocket,&amp;fdSet);	 // Den Socket der verbindungen annimmt hinzufügen

			// alle gültigen Client-Sockets hinzufügen (nur die, die nicht INVALID_SOCKET sind)
			FD_ARRAY_SET(clients, MAX_CLIENTS, fdSet);

			rc=select(0,&amp;fdSet,NULL,NULL,NULL); //auf Ankommende Daten warten
			PrintError(rc);

			// acceptSocket is im fd_set? =&gt; verbindung annehmen (sofern es platz hat)
			if(FD_ISSET(acceptSocket,&amp;fdSet)) 
			{
				rc = AcceptClient(acceptSocket, clients, MAX_CLIENTS);
				if(rc &gt;= 0)
				{
					//weitere Initialisierungscode......
				}

			}

			// prüfen wlecher client sockets im fd_set sind
			for(i=0;i&lt;MAX_CLIENTS;i++) 
			{
				if(clients[i]!=INVALID_SOCKET)
				{
					if(FD_ISSET(clients[i],&amp;fdSet))
					{
						//Am CLientem Liegen Daten an, also werden sie abgerufen
						rc=recv(clients[i],buf,INC_BUFFER_SIZE,0);
						// prüfen ob die verbindung geschlossen wurde oder ein fehler auftrat
						if(rc==0 || rc==SOCKET_ERROR)
						{
							printf(&quot;Client %d hat die Verbindung geschlossen\n&quot;,i);
							closesocket(clients[i]); // socket schliessen
							//CLode vom Clienten Aufrufen
							clients[i]=INVALID_SOCKET; // seinen platz wieder freigeben
							//Weiterer Code...

						} 
						else
						{
							//Keine Fehler...also das Empfangende verarbeiten.
						}
					}
				}
			}

	}
</code></pre>
<p>Oder liegt das Problem einfach daran, das ich etwas vergessen habe zu machen?</p>
<p>Mfg Stu</p>
]]></description><link>https://www.c-plusplus.net/forum/post/874664</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/874664</guid><dc:creator><![CDATA[Stu]]></dc:creator><pubDate>Sun, 18 Sep 2005 10:36:41 GMT</pubDate></item><item><title><![CDATA[Reply to Loopback-Packete werden teileweise verschluckt on Sun, 18 Sep 2005 10:53:49 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile.php?mode=viewprofile&amp;u=403" rel="nofollow">HumeSikkins</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=15" rel="nofollow">C++</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=4" rel="nofollow">WinAPI</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic.php?t=39405" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/874799</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/874799</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Sun, 18 Sep 2005 10:53:49 GMT</pubDate></item></channel></rss>