<?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 UDP Timeout]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich habe ein Programm geschrieben, welches per UDP mit einem Controller kommuniziert. In den meisten Fällen funktioniert alles tadellos. Nach unvorhersagbarer Zeit hängt das Programm und liefert nach noch längerer Wartezeit eine &quot;unhandled exception&quot;. Was das heißt ist mir klar. Allerdings weiß ich nicht was ich besser machen soll. Hängen tut das Programm an der letzten Zeile folgenden (relavanten teil)Codes:</p>
<pre><code>io_service = new boost::asio::io_service;
resolver = new boost::asio::ip::udp::resolver(*io_service);
query = new boost::asio::ip::udp::resolver::query(boost::asio::ip::udp::v4(), &quot;192.168.xxx.xxx&quot;, &quot;PORT&quot;);
receiver_endpoint = new boost::asio::ip::udp::endpoint(*resolver-&gt;resolve(*query));
socket = new boost::asio::ip::udp::socket(*io_service);
socket-&gt;open(boost::asio::ip::udp::v4());
sender_endpoint = new boost::asio::ip::udp::endpoint();

socket-&gt;send_to(boost::asio::buffer(send_buf), *receiver_endpoint);
size_t len = socket-&gt;receive_from(boost::asio::buffer(recv_buf), *sender_endpoint);
</code></pre>
<p>Nach Recherche im Internet kann ich das Problem auf ein fehlendes timeout zurückführen. In den dort genannten Beispielen wurde async mit ASIO genannt, ich wurde aus den Beispielen allerdings nicht so recht schlau.<br />
Ich habe erst vor kurzem mit Boost angefangen und hoffe ihr könnt mir helfen.</p>
<p>EDIT: Ich hoffe mit Boost eine Platformunabhängige Lösung zu finden. Sollte das nicht möglich sein würde auch eine Windows kompatible Lösung reichen. Als Compiler wird momentan Visual Studio 10 benutzt. In Zukunft könnte auch eine Linux Lösung mit gcc folgen.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/319783/boost-asio-udp-timeout</link><generator>RSS for Node</generator><lastBuildDate>Sat, 25 Jul 2026 03:39:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/319783.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 03 Sep 2013 08:25:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Boost Asio UDP Timeout on Tue, 03 Sep 2013 08:28:34 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich habe ein Programm geschrieben, welches per UDP mit einem Controller kommuniziert. In den meisten Fällen funktioniert alles tadellos. Nach unvorhersagbarer Zeit hängt das Programm und liefert nach noch längerer Wartezeit eine &quot;unhandled exception&quot;. Was das heißt ist mir klar. Allerdings weiß ich nicht was ich besser machen soll. Hängen tut das Programm an der letzten Zeile folgenden (relavanten teil)Codes:</p>
<pre><code>io_service = new boost::asio::io_service;
resolver = new boost::asio::ip::udp::resolver(*io_service);
query = new boost::asio::ip::udp::resolver::query(boost::asio::ip::udp::v4(), &quot;192.168.xxx.xxx&quot;, &quot;PORT&quot;);
receiver_endpoint = new boost::asio::ip::udp::endpoint(*resolver-&gt;resolve(*query));
socket = new boost::asio::ip::udp::socket(*io_service);
socket-&gt;open(boost::asio::ip::udp::v4());
sender_endpoint = new boost::asio::ip::udp::endpoint();

socket-&gt;send_to(boost::asio::buffer(send_buf), *receiver_endpoint);
size_t len = socket-&gt;receive_from(boost::asio::buffer(recv_buf), *sender_endpoint);
</code></pre>
<p>Nach Recherche im Internet kann ich das Problem auf ein fehlendes timeout zurückführen. In den dort genannten Beispielen wurde async mit ASIO genannt, ich wurde aus den Beispielen allerdings nicht so recht schlau.<br />
Ich habe erst vor kurzem mit Boost angefangen und hoffe ihr könnt mir helfen.</p>
<p>EDIT: Ich hoffe mit Boost eine Platformunabhängige Lösung zu finden. Sollte das nicht möglich sein würde auch eine Windows kompatible Lösung reichen. Als Compiler wird momentan Visual Studio 10 benutzt. In Zukunft könnte auch eine Linux Lösung mit gcc folgen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2349993</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2349993</guid><dc:creator><![CDATA[akirahinoshiro]]></dc:creator><pubDate>Tue, 03 Sep 2013 08:28:34 GMT</pubDate></item><item><title><![CDATA[Reply to Boost Asio UDP Timeout on Tue, 03 Sep 2013 09:43:53 GMT]]></title><description><![CDATA[<p>Schon mal probiert, es erstmal einfach zu gestalten, also der klassische Weg mit select, sendto und recvfrom. Ich denke nicht, dass der Performanceverlust ins Gewicht faellt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2350003</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2350003</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Tue, 03 Sep 2013 09:43:53 GMT</pubDate></item><item><title><![CDATA[Reply to Boost Asio UDP Timeout on Tue, 03 Sep 2013 10:03:36 GMT]]></title><description><![CDATA[<p>Ich wollte die WinAPI meiden, da die Überlegung besteht das Programm auf andere Plattformen zu übertragen. Zu diesem Zweck ist bisher nur Qt und Boost verwendet wurden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2350011</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2350011</guid><dc:creator><![CDATA[akirahinoshiro]]></dc:creator><pubDate>Tue, 03 Sep 2013 10:03:36 GMT</pubDate></item><item><title><![CDATA[Reply to Boost Asio UDP Timeout on Tue, 03 Sep 2013 11:26:18 GMT]]></title><description><![CDATA[<p>Das sind eine ganze Menge new's und ich bezweifele das du die brauchst und auch richtig mit umgehst. Du kannst alles wunderbar auf den Stack packen. Wenn du ein UdpSocket mit recv-timeout brauchst, dann orientiere dich hiernach: <a href="http://www.boost.org/doc/libs/1_54_0/doc/html/boost_asio/example/cpp03/timeouts/blocking_udp_client.cpp" rel="nofollow">http://www.boost.org/doc/libs/1_54_0/doc/html/boost_asio/example/cpp03/timeouts/blocking_udp_client.cpp</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2350032</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2350032</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 03 Sep 2013 11:26:18 GMT</pubDate></item><item><title><![CDATA[Reply to Boost Asio UDP Timeout on Tue, 03 Sep 2013 14:57:10 GMT]]></title><description><![CDATA[<p>akirahinoshiro schrieb:</p>
<blockquote>
<p>Ich wollte die WinAPI meiden, da die Überlegung besteht das Programm auf andere Plattformen zu übertragen. Zu diesem Zweck ist bisher nur Qt und Boost verwendet wurden.</p>
</blockquote>
<p>Du hast keine Ahnung. select, recvfrom, sendto .. ist POSIX, d.h. ist auf fast allen unixoiden Betriebssystemen zu finden und unter Windows. Unter Windows muss man nur ein zusaetzliches WSAStartup machen. Hier sind die Basics: <a href="http://beej.us/guide/bgnet/" rel="nofollow">http://beej.us/guide/bgnet/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2350059</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2350059</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Tue, 03 Sep 2013 14:57:10 GMT</pubDate></item><item><title><![CDATA[Reply to Boost Asio UDP Timeout on Tue, 03 Sep 2013 15:09:18 GMT]]></title><description><![CDATA[<p>Das kann ich leider (noch) nicht abstreiten. Gibt es irgendwelche Fallstricke über die man bei Sockets noch stolpern könnte?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2350064</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2350064</guid><dc:creator><![CDATA[akirahinoshiro]]></dc:creator><pubDate>Tue, 03 Sep 2013 15:09:18 GMT</pubDate></item></channel></rss>