<?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, prüfen ob socket noch verbunden ist]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich benutzte boost::asio für einen Server der TCP-Requests weiterleitet. Sprich, ich habe zwei Benutzer (A und <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face_with_sunglasses"
      title="B)"
      alt="😎"
    /> die sich mit dem Server verbinden und dieser leitet die Daten von A nach B weiter.</p>
<p>Momentan verbindet sich zunächst der Benutzer dem die Daten gesendet werden sollen (B), anschließend Benutzer A.</p>
<p>Mein Problem: Das läuft alles asynchron. Angenommen Benutzer B verbindet sich, so wird ab diesem Zeitpunkt ein Port für Benutzer A geöffnet. Sollte sich Benutzer B nun disconnecten bleibt der Port für Benutzer A geöffnet bis sich Benutzer A verbindet und Daten sendet. Das schlägt dann logischerweise fehl. Sollte sich Benutzer A aber niemals verbinden bleibt auch für immer der Port belegt.</p>
<p>Was ich möchte: Wenn Benutzer B sich disconnected, soll das Socket, das für Benutzer A geöffnet wurde auch geschlossen werden. Das ist nur wichtig falls Benutzer A noch nicht connected ist, wenn Daten ausgetauscht werden merke ich ja, dass es fehlschlägt.</p>
<p>Meine Frage: Wie kann ich das realisieren? TCP bietet mir ja eigentlich keine direkte Möglichkeit sowas zu prüfen? Muss ich tatsächlich regelmäßig pollen oder so? Wäre für Idee dankbar.</p>
<p>Viele Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/335236/boost-asio-prüfen-ob-socket-noch-verbunden-ist</link><generator>RSS for Node</generator><lastBuildDate>Fri, 24 Apr 2026 21:02:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/335236.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 07 Nov 2015 22:57:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to boost::asio, prüfen ob socket noch verbunden ist on Sat, 07 Nov 2015 22:57:26 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich benutzte boost::asio für einen Server der TCP-Requests weiterleitet. Sprich, ich habe zwei Benutzer (A und <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face_with_sunglasses"
      title="B)"
      alt="😎"
    /> die sich mit dem Server verbinden und dieser leitet die Daten von A nach B weiter.</p>
<p>Momentan verbindet sich zunächst der Benutzer dem die Daten gesendet werden sollen (B), anschließend Benutzer A.</p>
<p>Mein Problem: Das läuft alles asynchron. Angenommen Benutzer B verbindet sich, so wird ab diesem Zeitpunkt ein Port für Benutzer A geöffnet. Sollte sich Benutzer B nun disconnecten bleibt der Port für Benutzer A geöffnet bis sich Benutzer A verbindet und Daten sendet. Das schlägt dann logischerweise fehl. Sollte sich Benutzer A aber niemals verbinden bleibt auch für immer der Port belegt.</p>
<p>Was ich möchte: Wenn Benutzer B sich disconnected, soll das Socket, das für Benutzer A geöffnet wurde auch geschlossen werden. Das ist nur wichtig falls Benutzer A noch nicht connected ist, wenn Daten ausgetauscht werden merke ich ja, dass es fehlschlägt.</p>
<p>Meine Frage: Wie kann ich das realisieren? TCP bietet mir ja eigentlich keine direkte Möglichkeit sowas zu prüfen? Muss ich tatsächlich regelmäßig pollen oder so? Wäre für Idee dankbar.</p>
<p>Viele Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2474568</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2474568</guid><dc:creator><![CDATA[asio_tcp_help]]></dc:creator><pubDate>Sat, 07 Nov 2015 22:57:26 GMT</pubDate></item><item><title><![CDATA[Reply to boost::asio, prüfen ob socket noch verbunden ist on Sun, 08 Nov 2015 12:00:31 GMT]]></title><description><![CDATA[<p>Wenn mit &quot;Port öffnen&quot; ein accept gemeint ist, wüsste ich nicht, wie man da etwas mit &quot;pollen&quot; über den Verbindungszustand herausfinden könnte. Aber beim Connect wird doch irgendeine Funktion ausgeführt. Die kann doch ganz einfach ein Flag auf &quot;connected&quot; setzen, das vor dem accept auf &quot;disconnected&quot; gesetzt wurde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2474590</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2474590</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Sun, 08 Nov 2015 12:00:31 GMT</pubDate></item><item><title><![CDATA[Reply to boost::asio, prüfen ob socket noch verbunden ist on Sun, 08 Nov 2015 15:12:42 GMT]]></title><description><![CDATA[<p>Ich glaub da hab ich mich missverständlich ausgedrückt.</p>
<ol>
<li>Der Server wartet auf Port <em>x</em> auf eingehende Verbindungen (&quot;accept&quot;-Zustand)</li>
<li>Der Empfänger verbindet sich mit dem Server auf Port x und sendet eine Zeichenkette (den Port <em>y</em> der für den Sender geöffnet werden soll)</li>
<li>Der Server wartet auf Port <em>y</em> auf eingehende Verbindungen (&quot;accept&quot;-Zustand)</li>
<li>Der Sender verbindet sich mit dem Server auf Port y und fängt an Daten an den Server zu senden</li>
<li>Der Server leitet die empfangenen Daten an den Empfänger (der sich zuerst verbunden hat) weiter</li>
</ol>
<p>Wenn jetzt zwischen Punkt 3 und 4 der Empfänger sich disconnected sehe ich keine Möglichkeit das zu detektieren, da zu diesem Punkt ja keine Daten ausgetauscht werden. Momentan erkenne ich erst, dass es nicht funktioniert, wenn der Sender anfängt die ersten Bytes zu senden (4).</p>
<p>Und genau da suche ich Lösungsvorschläge. Ich möchte das der Port der für den Sender belegt ist freigegeben wird wenn der Empfänger nicht mehr da ist um die weitergeleiteten Daten zu empfangen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2474609</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2474609</guid><dc:creator><![CDATA[asio_tcp_help]]></dc:creator><pubDate>Sun, 08 Nov 2015 15:12:42 GMT</pubDate></item><item><title><![CDATA[Reply to boost::asio, prüfen ob socket noch verbunden ist on Sun, 08 Nov 2015 19:15:22 GMT]]></title><description><![CDATA[<p>Wenn deine Frage ist, wie du feststellen kannst, dass der Port zu schließen isr: siehe oben.</p>
<p>Wenn deine Frage ist, wie kann ich boost dazu veranlassen, den Port zu schließen: keine Ahnung</p>
<p>Wenn deine Frage eine ganz andere ist, habe ich dich nicht verstanden <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2474646</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2474646</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Sun, 08 Nov 2015 19:15:22 GMT</pubDate></item><item><title><![CDATA[Reply to boost::asio, prüfen ob socket noch verbunden ist on Mon, 09 Nov 2015 16:33:47 GMT]]></title><description><![CDATA[<p>asio_tcp_help schrieb:</p>
<blockquote>
<p>Ich glaub da hab ich mich missverständlich ausgedrückt.</p>
<p>Wenn jetzt zwischen Punkt 3 und 4 der Empfänger sich disconnected sehe ich keine Möglichkeit das zu detektieren, da zu diesem Punkt ja keine Daten ausgetauscht werden.</p>
</blockquote>
<p>Du kannst weiter auf dem Socket lesen, dann bekommst Du den Verbindungsabbruch der ersten Verbindung mit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2474766</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2474766</guid><dc:creator><![CDATA[Torsten Robitzki]]></dc:creator><pubDate>Mon, 09 Nov 2015 16:33:47 GMT</pubDate></item></channel></rss>