<?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[WINSOCK : recv könnte blockieren, was nun ?]]></title><description><![CDATA[<p>Hallo, folgendes Szenario :</p>
<p>Eine Anwendung hat einen Thread, der die GUI bedient und je nach Bedarf einen zweiten Thread, der Netzwerkaufgaben erledigen soll.</p>
<p>Nun mal angenommen, der zweite Thread bleibt in recv () hängen (warum auch immer).</p>
<p>Würde es funktionieren, daß dann der erste Thread irgendwas (Fehlermeldung z.B.) an den socket sendet um den zweiten Thread aus recv () wieder herauszukriegen ?</p>
<p>Oder anders gefragt :</p>
<p>Darf der erste Thread den socket &quot;einfach so&quot; schließen, obwohl der zweite Thread noch in recv () hängt ?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/208522/winsock-recv-könnte-blockieren-was-nun</link><generator>RSS for Node</generator><lastBuildDate>Sat, 25 Apr 2026 02:30:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/208522.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 19 Mar 2008 11:24:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to WINSOCK : recv könnte blockieren, was nun ? on Wed, 19 Mar 2008 11:24:05 GMT]]></title><description><![CDATA[<p>Hallo, folgendes Szenario :</p>
<p>Eine Anwendung hat einen Thread, der die GUI bedient und je nach Bedarf einen zweiten Thread, der Netzwerkaufgaben erledigen soll.</p>
<p>Nun mal angenommen, der zweite Thread bleibt in recv () hängen (warum auch immer).</p>
<p>Würde es funktionieren, daß dann der erste Thread irgendwas (Fehlermeldung z.B.) an den socket sendet um den zweiten Thread aus recv () wieder herauszukriegen ?</p>
<p>Oder anders gefragt :</p>
<p>Darf der erste Thread den socket &quot;einfach so&quot; schließen, obwohl der zweite Thread noch in recv () hängt ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1477171</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1477171</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 19 Mar 2008 11:24:05 GMT</pubDate></item><item><title><![CDATA[Reply to WINSOCK : recv könnte blockieren, was nun ? on Wed, 19 Mar 2008 12:05:27 GMT]]></title><description><![CDATA[<p>wenn ich dich richtig verstanden habe,</p>
<p>dann gibts nur die möglichkeit, dass der erste thread den zweiten thread killt. direkt irgendwo rausholen wird wohl nicht gehen, denke ich..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1477195</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1477195</guid><dc:creator><![CDATA[Machine]]></dc:creator><pubDate>Wed, 19 Mar 2008 12:05:27 GMT</pubDate></item><item><title><![CDATA[Reply to WINSOCK : recv könnte blockieren, was nun ? on Wed, 19 Mar 2008 12:20:58 GMT]]></title><description><![CDATA[<p>TerminateThread sollte es aber nicht sein.</p>
<p>Ich dachte eher an DuplicateHandle mit DUPLICATE_CLOSE_SOURCE und CloseHandle.</p>
<p>Wenn der socket ungültig wird, müsste eigentlich das Betriebssystem den zweiten Thread darüber &quot;in Kenntniss setzen&quot; und der zweite Thread kann &quot;normal&quot; auslaufen, oder ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1477209</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1477209</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 19 Mar 2008 12:20:58 GMT</pubDate></item><item><title><![CDATA[Reply to WINSOCK : recv könnte blockieren, was nun ? on Wed, 19 Mar 2008 12:56:09 GMT]]></title><description><![CDATA[<p>hm... einen Versuch wäre es wert. Obs klappt weiß ich nicht. Wäre aber mal interessant...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1477242</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1477242</guid><dc:creator><![CDATA[Machine]]></dc:creator><pubDate>Wed, 19 Mar 2008 12:56:09 GMT</pubDate></item><item><title><![CDATA[Reply to WINSOCK : recv könnte blockieren, was nun ? on Wed, 19 Mar 2008 12:59:37 GMT]]></title><description><![CDATA[<p>closesocket: Any pending blocking, asynchronous calls issued by any thread in this process are canceled without posting any notification messages.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1477245</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1477245</guid><dc:creator><![CDATA[..........]]></dc:creator><pubDate>Wed, 19 Mar 2008 12:59:37 GMT</pubDate></item><item><title><![CDATA[Reply to WINSOCK : recv könnte blockieren, was nun ? on Wed, 19 Mar 2008 13:17:51 GMT]]></title><description><![CDATA[<p>Lieber nicht : &quot;closesocket : The routine <strong>can block</strong> if acting on a blocking socket.&quot;</p>
<p>Das Problem ist ja grade, daß der zweite Thread recv () aufgerufen hat, aber vom Aufruf nicht zurückkehren will.</p>
<p>Die DuplicateHandle-Variante funktioniert (offensichtlich) sogar bei allen Funktionen, die einen socket brauchen. Der Thread kommt jedesmal vom Aufruf zurück und kann &quot;weiterlaufen&quot;.</p>
<p>Allerdings weiß ich nicht, ob das irgendwelche Seiteneffekte hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1477262</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1477262</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 19 Mar 2008 13:17:51 GMT</pubDate></item><item><title><![CDATA[Reply to WINSOCK : recv könnte blockieren, was nun ? on Thu, 20 Mar 2008 01:20:06 GMT]]></title><description><![CDATA[<p>Du könntest select benutzen, um das blocken zu umgehen.<br />
Dann mit Events oder ähnlichem gesteuert beenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1477587</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1477587</guid><dc:creator><![CDATA[smooth_op]]></dc:creator><pubDate>Thu, 20 Mar 2008 01:20:06 GMT</pubDate></item><item><title><![CDATA[Reply to WINSOCK : recv könnte blockieren, was nun ? on Fri, 21 Mar 2008 00:53:02 GMT]]></title><description><![CDATA[<p>Zu spät ! <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>
<p>Jetzt habe ich mich auf die DuplicateHandle-Variante eingeschossen. Dann kehrt der zweite Thread, egal in welcher Funktion er grade steckengeblieben ist, sofort mit einem SOCKET_ERROR zurück und kann dann kontrolliert auslaufen.</p>
<p>Bleibt nur noch die Frage, ob man den duplizierten socket mit CloseHandle oder mit closesocket freigeben soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1478148</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1478148</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 21 Mar 2008 00:53:02 GMT</pubDate></item></channel></rss>