<?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[Problem mit &amp;quot;connect&amp;quot; wenn Gegenstelle nicht existiert]]></title><description><![CDATA[<p>Hallo ich habe ein kleines Programm geschrieben um über einen Zeitserver die Uhrzeit zu bekommen. Hierbei wird auf dem server der Port 37 abgefragt und man erhält die Sekunden zurück die seit dem 1.1.1900 vergangen sind, nix spektakuläres also. Das klappt auch soweit. Wenn ich jedoch versuche eine IP Adresse abzufragen die nicht existiert benötigt der Befehl connect(sock,....) ca. 20 Sekunden bevor er returniert. Wie kann ich diese Zeit für Connect heruntersetzten? Der Hintergrund ist folgender, wenn ein Zeitserver nicht antwortet, möchte ich einen anderen abfragen, aber 20s warten finde ich etwas zu lange.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/236245/problem-mit-quot-connect-quot-wenn-gegenstelle-nicht-existiert</link><generator>RSS for Node</generator><lastBuildDate>Tue, 07 Apr 2026 23:05:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/236245.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 12 Mar 2009 17:02:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit &amp;quot;connect&amp;quot; wenn Gegenstelle nicht existiert on Thu, 12 Mar 2009 17:02:22 GMT]]></title><description><![CDATA[<p>Hallo ich habe ein kleines Programm geschrieben um über einen Zeitserver die Uhrzeit zu bekommen. Hierbei wird auf dem server der Port 37 abgefragt und man erhält die Sekunden zurück die seit dem 1.1.1900 vergangen sind, nix spektakuläres also. Das klappt auch soweit. Wenn ich jedoch versuche eine IP Adresse abzufragen die nicht existiert benötigt der Befehl connect(sock,....) ca. 20 Sekunden bevor er returniert. Wie kann ich diese Zeit für Connect heruntersetzten? Der Hintergrund ist folgender, wenn ein Zeitserver nicht antwortet, möchte ich einen anderen abfragen, aber 20s warten finde ich etwas zu lange.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1678836</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1678836</guid><dc:creator><![CDATA[Marius..]]></dc:creator><pubDate>Thu, 12 Mar 2009 17:02:22 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit &amp;quot;connect&amp;quot; wenn Gegenstelle nicht existiert on Thu, 12 Mar 2009 17:37:28 GMT]]></title><description><![CDATA[<p>Sockets sind immer eine betriebssystemspezifische Sache. Welches benutzt du?</p>
<p>Falls du Windows verwendest, sollte das ungefähr so funktionieren:</p>
<pre><code class="language-cpp">struct timeval tv;
tv.tv_sec = 5; // 5 Sekunden
tv.tv_usec = 0; // 0 Mikrosekunden

setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, (char*)&amp;tv, sizeof(tv));
</code></pre>
<p><a href="http://msdn.microsoft.com/en-us/library/ms740476(VS.85).aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/ms740476(VS.85).aspx</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1678856</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1678856</guid><dc:creator><![CDATA[JustSomeCoder]]></dc:creator><pubDate>Thu, 12 Mar 2009 17:37:28 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit &amp;quot;connect&amp;quot; wenn Gegenstelle nicht existiert on Thu, 12 Mar 2009 17:43:23 GMT]]></title><description><![CDATA[<p>es gibt verschiedene möglichkeiten:<br />
1. socket im non-blocking mode betreiben und mit 'select' abfragen, wie's um die verbindungsanfrage bestellt ist. 'nen time-out kannst auch angeben.<br />
2. blocking sockets mit multitasking nutzen. wenn task_n x sekunden erfolglos war, dann mit task_n+1 eine andere verbindung versuchen.<br />
3. die icmp message abfangen, die vom server kommt, wenn der port zu ist. geht natürlich nur, wenn der server selber nicht down ist.<br />
4. systemweite tcp-timeouts verstellen. ist aber doof, für andere programme, die sich darauf verlassen, dass gewisse default-werte da sind.<br />
<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/1678858</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1678858</guid><dc:creator><![CDATA[+fricky]]></dc:creator><pubDate>Thu, 12 Mar 2009 17:43:23 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit &amp;quot;connect&amp;quot; wenn Gegenstelle nicht existiert on Thu, 12 Mar 2009 17:46:28 GMT]]></title><description><![CDATA[<p>JustSomeCoder schrieb:</p>
<blockquote>
<p>SO_RCVTIMEO</p>
</blockquote>
<p>das gibt's, damit 'recv' frühzeitig zurückkehren kann, wenn keine daten da sind. hat mit 'connect' eigentlich nichts zu tun.<br />
<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/1678861</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1678861</guid><dc:creator><![CDATA[+fricky]]></dc:creator><pubDate>Thu, 12 Mar 2009 17:46:28 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit &amp;quot;connect&amp;quot; wenn Gegenstelle nicht existiert on Thu, 12 Mar 2009 18:05:19 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19893">@JustSomeCoder</a><br />
Hallo, ja ich benutze Windows. Leider funktioniert dein Bsp.-Code nicht. Ich habe mich nun auch auf der Microsoftseite umgesehen, aber leider nichts über eine connect-timeout Sache herausfinden können.</p>
<p>Also der Zeitserver schickt sofort nach der Connectanforderung die Zeit. Ich muss nach dem connect nicht erst noch irgendwas senden. Das Connect ist der Flaschenhals in diesem Fall. Ich habe ja in meine Quellcode Timerfunktionen eingebaut. bei 0ms wird der Socket bereitgestellt. Danach connect aufgerufen, nachdem connect zurückkehrt sind dann mehr als 20 Sekunden vergangen. Dieses Problem würde ich gerne lösen. Also irgendow muss man doch die connect-timeout einstellen können. Wenn es eine Betriebssysteminterne Sache ist, kann man die ja per Programm kurzzeitig umschalten und dann wieder zurückstellen, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1678869</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1678869</guid><dc:creator><![CDATA[Marius..]]></dc:creator><pubDate>Thu, 12 Mar 2009 18:05:19 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit &amp;quot;connect&amp;quot; wenn Gegenstelle nicht existiert on Fri, 13 Mar 2009 10:22:07 GMT]]></title><description><![CDATA[<p>Ähm, keiner weiss eine Antwort. Heisst das man kann die Timeoutzeit für einen nicht existierenden/antwortenden Client nicht verstellen. Da muß doch irgendwo in der Registry oder sonst wo hinterlegt sein?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1679194</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1679194</guid><dc:creator><![CDATA[Marius..]]></dc:creator><pubDate>Fri, 13 Mar 2009 10:22:07 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit &amp;quot;connect&amp;quot; wenn Gegenstelle nicht existiert on Fri, 13 Mar 2009 12:42:52 GMT]]></title><description><![CDATA[<p>und wenns fest im Quelltext von Windows hinterlegt ist, hat man bei<br />
einem unfreien Betriebssystem verloren</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1679292</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1679292</guid><dc:creator><![CDATA[pferdefreund]]></dc:creator><pubDate>Fri, 13 Mar 2009 12:42:52 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit &amp;quot;connect&amp;quot; wenn Gegenstelle nicht existiert on Fri, 13 Mar 2009 15:06:41 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile-var-mode-is-viewprofile-and-u-is-1819.html" rel="nofollow">rüdiger</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-10.html" rel="nofollow">ANSI C</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-8.html" rel="nofollow">Rund um die Programmierung</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39405.html" 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/1679407</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1679407</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Fri, 13 Mar 2009 15:06:41 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit &amp;quot;connect&amp;quot; wenn Gegenstelle nicht existiert on Fri, 13 Mar 2009 15:53:49 GMT]]></title><description><![CDATA[<p>+fricky schrieb:</p>
<blockquote>
<p>3. die icmp message abfangen, die vom server kommt, wenn der port zu ist. geht natürlich nur, wenn der server selber nicht down ist.</p>
</blockquote>
<p>Dir scheint nicht klar zu sein dass, falls der Server die Verbindung aktiv ablehnt, connect auch sofort mit einem Fehler zurückkommt, und nicht blöd 20 Sekunden wartet. Dein boah-ich-bin-co-cool-und-voll-der-007 Vorschlag bezüglich ICMP Abfangen bringt also genau *garnix*.<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1679456</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1679456</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 13 Mar 2009 15:53:49 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit &amp;quot;connect&amp;quot; wenn Gegenstelle nicht existiert on Fri, 13 Mar 2009 16:19:19 GMT]]></title><description><![CDATA[<p>OK Leute, nach intensiver Recherche in Netz habe ich folgenden aufschlussreichen Artikel entdeckt:</p>
<p><a href="http://www.codeguru.com/forum/showthread.php?t=312668" rel="nofollow">http://www.codeguru.com/forum/showthread.php?t=312668</a></p>
<p>Hier wird auch erklät wie sich die timeoutzeit unter Windows von ca, 20 s zusammensetzt: 1*3s + 2*3s + 4*3s = 21s<br />
Aufgrund diese Artikels habe ich mal meinen Sourcecode angepasst und es klappt wirklich. Hier das Ergebniss</p>
<pre><code class="language-cpp">/*
==============================================
iNet_GetNTPTime

holt sich die Zeit von einem Zeitserver
Achtung WSA muss vorher initialisiert worden sein
host		:	muss schon als uLong konvertiert angegeben werden
timeout		:	die Timeoutzeit für die Verbindung in Millisekunden
ping		:	Ping wird &quot;gefüllt&quot; und zurückgegeben
==============================================
*/
boolean iNet_GetNTPTime(u_long *ulTime, u_long host, int timeout_ms, int *ping){

	SOCKET			skt;
	SOCKADDR_IN		addr;
	u_long			ulFlag = 1, time_start, time_end, NonBlock = 1;
	fd_set			fd_read;
	TIMEVAL		tv;
	boolean			back = FALSE, loop = TRUE;

	*ulTime = 0;
	*ping = 0;
	skt = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
	if(skt == INVALID_SOCKET){
		return FALSE;
	}
	timeBeginPeriod(1);
	time_start = timeGetTime();
	addr.sin_family = AF_INET ;
	addr.sin_port = htons(IPPORT_TIMESERVER);
	addr.sin_addr.s_addr = host;
	ioctlsocket(skt, FIONBIO, &amp;NonBlock);
	connect(skt, (SOCKADDR *)&amp;addr, sizeof(addr));
	tv.tv_sec = 0;
	tv.tv_usec = timeout_ms*1000;
	FD_ZERO(&amp;fd_read);
	fd_read.fd_count = 1;
	fd_read.fd_array[0] = skt;
	FD_SET(skt, &amp;fd_read);
	if(select(0, &amp;fd_read, NULL, NULL, &amp;tv) != SOCKET_ERROR){
		{
			Sleep(5);
			if(recv(skt, (char *)ulTime, 4, MSG_PEEK) &gt; 0){
				loop = FALSE;
				back = TRUE;
			}
			time_end = timeGetTime();
			if((int)(time_end - time_start) &gt; timeout_ms){
				loop = FALSE;
			}
		}while(loop == TRUE);
		if(back == TRUE){
			*ulTime = ntohl(*ulTime);
		}
	}
	time_end = timeGetTime();
	timeEndPeriod(1);
	*ping = (int)(time_end - time_start);
	closesocket(skt);
	return back;
}
</code></pre>
<p>Wer's ausprobieren möchte kann &quot;3708009603&quot; für den uLong des Zeitserver übergeben</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1679471</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1679471</guid><dc:creator><![CDATA[Marius..]]></dc:creator><pubDate>Fri, 13 Mar 2009 16:19:19 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit &amp;quot;connect&amp;quot; wenn Gegenstelle nicht existiert on Fri, 13 Mar 2009 16:26:32 GMT]]></title><description><![CDATA[<p>MSG_PEEK ist pfui...Das Sleep(5) auch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1679479</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1679479</guid><dc:creator><![CDATA[hustenbär]]></dc:creator><pubDate>Fri, 13 Mar 2009 16:26:32 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit &amp;quot;connect&amp;quot; wenn Gegenstelle nicht existiert on Fri, 13 Mar 2009 16:58:28 GMT]]></title><description><![CDATA[<p>hustenbär schrieb:</p>
<blockquote>
<p>MSG_PEEK ist pfui...Das Sleep(5) auch.</p>
</blockquote>
<p>Eine Begründung wäre hilfreich, ich will ja hier was lernen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1679511</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1679511</guid><dc:creator><![CDATA[Marius..]]></dc:creator><pubDate>Fri, 13 Mar 2009 16:58:28 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit &amp;quot;connect&amp;quot; wenn Gegenstelle nicht existiert on Fri, 13 Mar 2009 17:01:27 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile-var-mode-is-viewprofile-and-u-is-1819.html" rel="nofollow">rüdiger</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-8.html" rel="nofollow">Rund um die Programmierung</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-4.html" rel="nofollow">WinAPI</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39405.html" 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/1679513</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1679513</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Fri, 13 Mar 2009 17:01:27 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit &amp;quot;connect&amp;quot; wenn Gegenstelle nicht existiert on Sat, 14 Mar 2009 07:21:16 GMT]]></title><description><![CDATA[<p><a href="http://support.microsoft.com/?scid=kb%3Ben-us%3B192599" rel="nofollow">http://support.microsoft.com/?scid=kb%3Ben-us%3B192599</a><br />
<a href="http://tangentsoft.net/wskfaq/articles/lame-list.html" rel="nofollow">http://tangentsoft.net/wskfaq/articles/lame-list.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1679714</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1679714</guid><dc:creator><![CDATA[C++ Forenbot]]></dc:creator><pubDate>Sat, 14 Mar 2009 07:21:16 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit &amp;quot;connect&amp;quot; wenn Gegenstelle nicht existiert on Sat, 14 Mar 2009 19:43:45 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Dein boah-ich-bin-co-cool-und-voll-der-007 Vorschlag bezüglich ICMP Abfangen bringt also genau *garnix*.</p>
</blockquote>
<p>08/15 nicht 007, aber stimmt, hab's mit UDP verwechselt. TCP schickt ein RST wenn am port keiner lauscht.<br />
<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/1680037</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1680037</guid><dc:creator><![CDATA[+fricky]]></dc:creator><pubDate>Sat, 14 Mar 2009 19:43:45 GMT</pubDate></item></channel></rss>