<?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[Timeout mit WSARecv und CompletionPort]]></title><description><![CDATA[<p>Hi allerseits ..</p>
<p>Ich bin gerade daran einen Server zu schreiben, der auf Overlapped IO mit Completion Ports basiert. Das heisst ich mache einen WASRecv und warte schliesslich mit GetQueuedCompletionStatus auf die Completion von irend einem registrierten Socket-Handle. Ich will aber nicht unbedingt ewig warten, sondern die Möglichkeit für einen Timeout einbauen. GetQueuedCompletionStatus hat einen Timeout Parameter. Da Diese Funktion aber für alle angemeldeten Sockets aufgerufen wird, bringt mir dieser nicht wirklich viel. Ich könnte mir bei jedem Socket merken, wann der letzte read abgesetzt wurde, auf GetQueuedCompletionStatus einen timeout setzten und schliesslich bei jedem aufwachen von GetQueuedCompletionStatus auf jedem Socket prüfen, ob die maximale Zeit seit dem letzten WSARev überschritten ist. Das wäre eine Variante aber eine relativ mühsame. Lieber wäre mir, wenn man beim WSARev einen Timeout angeben könnte und er dann so oder so eine Completion queuet, wenn diese abgelaufen ist. Das geht leider nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":-("
      alt="😞"
    /> Aber vielleicht könnte man irgendwie ein Flag auf dem Socket-Handle oder so setzen, um diesen Effekt zu erziehlen.</p>
<p>Hat da vielleicht jemand Erfahrungen mit sowas oder vielleicht sogar schon mal gemacht?</p>
<p>Vielen Dank und Grüsse! Dominic</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/215008/timeout-mit-wsarecv-und-completionport</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Apr 2026 00:54:27 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/215008.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 05 Jun 2008 13:19:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Timeout mit WSARecv und CompletionPort on Thu, 05 Jun 2008 14:30:25 GMT]]></title><description><![CDATA[<p>Hi allerseits ..</p>
<p>Ich bin gerade daran einen Server zu schreiben, der auf Overlapped IO mit Completion Ports basiert. Das heisst ich mache einen WASRecv und warte schliesslich mit GetQueuedCompletionStatus auf die Completion von irend einem registrierten Socket-Handle. Ich will aber nicht unbedingt ewig warten, sondern die Möglichkeit für einen Timeout einbauen. GetQueuedCompletionStatus hat einen Timeout Parameter. Da Diese Funktion aber für alle angemeldeten Sockets aufgerufen wird, bringt mir dieser nicht wirklich viel. Ich könnte mir bei jedem Socket merken, wann der letzte read abgesetzt wurde, auf GetQueuedCompletionStatus einen timeout setzten und schliesslich bei jedem aufwachen von GetQueuedCompletionStatus auf jedem Socket prüfen, ob die maximale Zeit seit dem letzten WSARev überschritten ist. Das wäre eine Variante aber eine relativ mühsame. Lieber wäre mir, wenn man beim WSARev einen Timeout angeben könnte und er dann so oder so eine Completion queuet, wenn diese abgelaufen ist. Das geht leider nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":-("
      alt="😞"
    /> Aber vielleicht könnte man irgendwie ein Flag auf dem Socket-Handle oder so setzen, um diesen Effekt zu erziehlen.</p>
<p>Hat da vielleicht jemand Erfahrungen mit sowas oder vielleicht sogar schon mal gemacht?</p>
<p>Vielen Dank und Grüsse! Dominic</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523310</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523310</guid><dc:creator><![CDATA[bayo]]></dc:creator><pubDate>Thu, 05 Jun 2008 14:30:25 GMT</pubDate></item><item><title><![CDATA[Reply to Timeout mit WSARecv und CompletionPort on Thu, 05 Jun 2008 20:10:06 GMT]]></title><description><![CDATA[<p>Ich würde Timer Queue Timer dafür benutzen</p>
<p><a href="http://msdn.microsoft.com/en-us/library/ms686796" rel="nofollow">http://msdn.microsoft.com/en-us/library/ms686796</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523668</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523668</guid><dc:creator><![CDATA[asdfasdf]]></dc:creator><pubDate>Thu, 05 Jun 2008 20:10:06 GMT</pubDate></item><item><title><![CDATA[Reply to Timeout mit WSARecv und CompletionPort on Fri, 06 Jun 2008 12:29:13 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>prinzipiell läßt sich per setsockopt und SO_RCVTIMEO ein Intervall,<br />
für Timeouts festlegen, ( zurück gibts ein WSAETIMEDOUT )</p>
<p>dem Namen nach sollte sich das ja auf das socket auswirken, ich weiß nur<br />
nicht ob das in dem Overlapped Schema weiterhilft,</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1524039</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1524039</guid><dc:creator><![CDATA[me0815]]></dc:creator><pubDate>Fri, 06 Jun 2008 12:29:13 GMT</pubDate></item><item><title><![CDATA[Reply to Timeout mit WSARecv und CompletionPort on Fri, 06 Jun 2008 12:54:35 GMT]]></title><description><![CDATA[<blockquote>
<p>The socket options SO_RCVTIMEO and SO_SNDTIMEO apply only to blocking sockets.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1524058</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1524058</guid><dc:creator><![CDATA[asdfasdf]]></dc:creator><pubDate>Fri, 06 Jun 2008 12:54:35 GMT</pubDate></item></channel></rss>