<?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[boost::asio Fehlebehandlung]]></title><description><![CDATA[<p>Hallo,</p>
<p>Bei meinem Bot habe ich einen kleinen Fehler gehabt, der mich nun 2 Stunden gekostet hat. Ich verstehe den Fehler nicht, vielleicht kanns mir ja jemand erklären.</p>
<p>Folgender Code:</p>
<pre><code class="language-cpp">socket::socket(boost::asio::io_service&amp; io_service, boost::asio::ip::tcp::resolver::iterator iterator)
			: sock(io_service)
		{
			boost::system::error_code ec;
			auto end = decltype(iterator)();

			while(iterator != end)
			{
				sock.connect(*iterator, ec);

				if(sock.is_open())
					return;

				++iterator;
			}

			throw stream_error(&quot;failed to connect to host: &quot; + ec.message());
		}
</code></pre>
<p>Ersetzt man hier die Prüfung</p>
<pre><code class="language-cpp">if(sock.is_open())
</code></pre>
<p>durch</p>
<pre><code class="language-cpp">if(!ec)
</code></pre>
<p>dann funktioniert die Überprüfung nicht, offenbar wird ec in diesem Fall nicht von connect() gesetzt. Wieso?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/292102/boost-asio-fehlebehandlung</link><generator>RSS for Node</generator><lastBuildDate>Mon, 17 Aug 2026 06:40:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/292102.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 02 Sep 2011 18:06:58 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to boost::asio Fehlebehandlung on Fri, 02 Sep 2011 18:06:58 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Bei meinem Bot habe ich einen kleinen Fehler gehabt, der mich nun 2 Stunden gekostet hat. Ich verstehe den Fehler nicht, vielleicht kanns mir ja jemand erklären.</p>
<p>Folgender Code:</p>
<pre><code class="language-cpp">socket::socket(boost::asio::io_service&amp; io_service, boost::asio::ip::tcp::resolver::iterator iterator)
			: sock(io_service)
		{
			boost::system::error_code ec;
			auto end = decltype(iterator)();

			while(iterator != end)
			{
				sock.connect(*iterator, ec);

				if(sock.is_open())
					return;

				++iterator;
			}

			throw stream_error(&quot;failed to connect to host: &quot; + ec.message());
		}
</code></pre>
<p>Ersetzt man hier die Prüfung</p>
<pre><code class="language-cpp">if(sock.is_open())
</code></pre>
<p>durch</p>
<pre><code class="language-cpp">if(!ec)
</code></pre>
<p>dann funktioniert die Überprüfung nicht, offenbar wird ec in diesem Fall nicht von connect() gesetzt. Wieso?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2114098</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2114098</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Fri, 02 Sep 2011 18:06:58 GMT</pubDate></item><item><title><![CDATA[Reply to boost::asio Fehlebehandlung on Fri, 02 Sep 2011 18:56:13 GMT]]></title><description><![CDATA[<p>Doku lesen:</p>
<p><a href="http://www.boost.org/doc/libs/1_46_0/doc/html/boost_asio/reference/basic_stream_socket/connect/overload2.html" rel="nofollow">http://www.boost.org/doc/libs/1_46_0/doc/html/boost_asio/reference/basic_stream_socket/connect/overload2.html</a></p>
<p>Falls dir da drin nix auffällt, lies es nochmal, langsamer <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<p>Tip: &quot;is_open()&quot; fragt nicht ab ob der Socket &quot;connected&quot; ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2114115</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2114115</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 02 Sep 2011 18:56:13 GMT</pubDate></item><item><title><![CDATA[Reply to boost::asio Fehlebehandlung on Fri, 02 Sep 2011 19:02:51 GMT]]></title><description><![CDATA[<p>Hm, alles seltsam. Naja, ich habe jetzt sowieso auf asynchrone IO umgebaut, da hab ich das Problem nicht, zumindest nicht auf diese Art.<br />
Danke trotzdem für die Antwort!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2114118</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2114118</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Fri, 02 Sep 2011 19:02:51 GMT</pubDate></item><item><title><![CDATA[Reply to boost::asio Fehlebehandlung on Fri, 02 Sep 2011 19:03:45 GMT]]></title><description><![CDATA[<p>Nix seltsam.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2114119</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2114119</guid><dc:creator><![CDATA[baerhust]]></dc:creator><pubDate>Fri, 02 Sep 2011 19:03:45 GMT</pubDate></item><item><title><![CDATA[Reply to boost::asio Fehlebehandlung on Fri, 02 Sep 2011 19:11:05 GMT]]></title><description><![CDATA[<p>Doch seltsam.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2114120</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2114120</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Fri, 02 Sep 2011 19:11:05 GMT</pubDate></item><item><title><![CDATA[Reply to boost::asio Fehlebehandlung on Fri, 02 Sep 2011 19:17:17 GMT]]></title><description><![CDATA[<p>in der doku steht if(ec) zum abfragen ob ein fehler vorliegt. du hast aber if(!ec) geschrieben. wo ist jetzt die seltsamkeit?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2114121</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2114121</guid><dc:creator><![CDATA[mittenim]]></dc:creator><pubDate>Fri, 02 Sep 2011 19:17:17 GMT</pubDate></item><item><title><![CDATA[Reply to boost::asio Fehlebehandlung on Fri, 02 Sep 2011 19:18:31 GMT]]></title><description><![CDATA[<p>Wohl seltsam.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2114122</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2114122</guid><dc:creator><![CDATA[314159265358979 Unterstüt]]></dc:creator><pubDate>Fri, 02 Sep 2011 19:18:31 GMT</pubDate></item><item><title><![CDATA[Reply to boost::asio Fehlebehandlung on Fri, 02 Sep 2011 19:22:08 GMT]]></title><description><![CDATA[<p>Also mir ging es eigentlich um den Teil:</p>
<p>Count Do(o)ku schrieb:</p>
<blockquote>
<p>This function is used to connect a socket to the specified remote endpoint. The function call will block until the connection is successfully made or an error occurs.</p>
<p>The socket is automatically opened if it is not already open. <strong>If the connect fails, and the socket was automatically opened, the socket is not returned to the closed state.</strong></p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2114124</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2114124</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 02 Sep 2011 19:22:08 GMT</pubDate></item><item><title><![CDATA[Reply to boost::asio Fehlebehandlung on Fri, 02 Sep 2011 19:20:31 GMT]]></title><description><![CDATA[<p>wtf boost asio ist einfach nur seltsam.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2114125</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2114125</guid><dc:creator><![CDATA[ne oder?]]></dc:creator><pubDate>Fri, 02 Sep 2011 19:20:31 GMT</pubDate></item><item><title><![CDATA[Reply to boost::asio Fehlebehandlung on Fri, 02 Sep 2011 19:27:03 GMT]]></title><description><![CDATA[<p>ne oder? schrieb:</p>
<blockquote>
<p>wtf boost asio ist einfach nur seltsam.</p>
</blockquote>
<p>Ne, ist vollkommen logisch.</p>
<p>&quot;is_open&quot; heisst &quot;der Socket existiert&quot;.<br />
Und eben nicht &quot;der Socket ist momentan connected&quot;.</p>
<p>Sonst würde die Funktion ja auch &quot;is_connected&quot; heissen, nen?</p>
<p>Andere Libs verwenden &quot;is valid&quot; statt &quot;is open&quot;, was vielleicht besser verständlich ist. Aber ich halte &quot;is open&quot; nicht für unlogisch oder gar falsch.</p>
<p>Hiesse die Klasse &quot;connection&quot; statt &quot;socket&quot; sähe die Sache etwas anders aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2114127</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2114127</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 02 Sep 2011 19:27:03 GMT</pubDate></item></channel></rss>