<?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[Multi Session Chat]]></title><description><![CDATA[<p>Hi, wollte mal nachhaken ob dieser Weg sinnvoll ist wenn man einen Chat mit einer unbegrenzten Teilnehmeranzahl programmiert.</p>
<p>Connections[i] ist ein Array aller aktiven Verbindungen, bei 0 beginnend.</p>
<pre><code class="language-cpp">for (i = 0;i &lt;= max;i++)    //Weiterleitung an alle verbundenen Clients
   {
   ServerSocket1-&gt;Socket-&gt;Connections[i]-&gt;SendText(v);
   }
</code></pre>
<p>Was passier wenn bei 10 Verbindungen der 7. disconnectet, wird dann das Array durch den disconnect neu sortiert oder entstehen lücken im Array? Da ich von Multithreading keine Ahnung habe und auch die Suche nach Multithreading in diesem Forum nirgendwo in verständlichem Deutsch zu finden war, habe ich mir mal so aus dem Bauch heraus geholfen:</p>
<pre><code class="language-cpp">void __fastcall TForm1::Edit1KeyDown(TObject *Sender, WORD &amp;Key,
      TShiftState Shift)
{
   if (Key == VK_RETURN)
  {

   if (Edit1-&gt;Text != &quot;&quot;)
  {

   if (isserver == true &amp;&amp; Label1-&gt;Caption != 0)
   {

     for (i = 0;i &lt;= max;i++) //Weiterleitung an alle verbundenen Clients
   {
   ServerSocket1-&gt;Socket-&gt;Connections[i]-&gt;SendText(name + &quot; &quot; +Edit1-&gt;Text);
   }

   Memo2-&gt;Lines-&gt;Add(name + &quot; &quot; +Edit1-&gt;Text);
   }
   else
   {
   if (ClientSocket1-&gt;Active)
   ClientSocket1-&gt;Socket-&gt;SendText(name + &quot; &quot; +Edit1-&gt;Text);
   }

   Edit1-&gt;Text = &quot;&quot;;
  }
 }
}

//----------------------------------------------------------------
void __fastcall TForm1::ServerSocket1Accept(TObject *Sender,
      TCustomWinSocket *Socket)
{
  isserver = true;
  Memo2-&gt;Lines-&gt;Add(&quot;Neuer Client: &quot;+Socket-&gt;RemoteAddress);

  max++; // Zähler für verbunden Clients (initialisiert bei -1 da erste Verbindung 0).

}

//-----------------------------------------------------------------

void __fastcall TForm1::ServerSocket1ClientDisconnect(TObject *Sender,
      TCustomWinSocket *Socket)
{

  max--; // Zähler für verbunden Clients.

}

//------------------------------------------------------------------
</code></pre>
<p>Ist es sinnvoll oder nicht ? Habe es mit 3 Clients getestet und habe immer einen anderen Client disconnected und habe soweit noch keine Fehler gefunden.<br />
Bin euch wie immer für jeden Beitrag sehr sehr dankbar <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/topic/84757/multi-session-chat</link><generator>RSS for Node</generator><lastBuildDate>Thu, 02 Jul 2026 22:21:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/84757.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 02 Sep 2004 10:25:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Multi Session Chat on Thu, 02 Sep 2004 10:31:03 GMT]]></title><description><![CDATA[<p>Hi, wollte mal nachhaken ob dieser Weg sinnvoll ist wenn man einen Chat mit einer unbegrenzten Teilnehmeranzahl programmiert.</p>
<p>Connections[i] ist ein Array aller aktiven Verbindungen, bei 0 beginnend.</p>
<pre><code class="language-cpp">for (i = 0;i &lt;= max;i++)    //Weiterleitung an alle verbundenen Clients
   {
   ServerSocket1-&gt;Socket-&gt;Connections[i]-&gt;SendText(v);
   }
</code></pre>
<p>Was passier wenn bei 10 Verbindungen der 7. disconnectet, wird dann das Array durch den disconnect neu sortiert oder entstehen lücken im Array? Da ich von Multithreading keine Ahnung habe und auch die Suche nach Multithreading in diesem Forum nirgendwo in verständlichem Deutsch zu finden war, habe ich mir mal so aus dem Bauch heraus geholfen:</p>
<pre><code class="language-cpp">void __fastcall TForm1::Edit1KeyDown(TObject *Sender, WORD &amp;Key,
      TShiftState Shift)
{
   if (Key == VK_RETURN)
  {

   if (Edit1-&gt;Text != &quot;&quot;)
  {

   if (isserver == true &amp;&amp; Label1-&gt;Caption != 0)
   {

     for (i = 0;i &lt;= max;i++) //Weiterleitung an alle verbundenen Clients
   {
   ServerSocket1-&gt;Socket-&gt;Connections[i]-&gt;SendText(name + &quot; &quot; +Edit1-&gt;Text);
   }

   Memo2-&gt;Lines-&gt;Add(name + &quot; &quot; +Edit1-&gt;Text);
   }
   else
   {
   if (ClientSocket1-&gt;Active)
   ClientSocket1-&gt;Socket-&gt;SendText(name + &quot; &quot; +Edit1-&gt;Text);
   }

   Edit1-&gt;Text = &quot;&quot;;
  }
 }
}

//----------------------------------------------------------------
void __fastcall TForm1::ServerSocket1Accept(TObject *Sender,
      TCustomWinSocket *Socket)
{
  isserver = true;
  Memo2-&gt;Lines-&gt;Add(&quot;Neuer Client: &quot;+Socket-&gt;RemoteAddress);

  max++; // Zähler für verbunden Clients (initialisiert bei -1 da erste Verbindung 0).

}

//-----------------------------------------------------------------

void __fastcall TForm1::ServerSocket1ClientDisconnect(TObject *Sender,
      TCustomWinSocket *Socket)
{

  max--; // Zähler für verbunden Clients.

}

//------------------------------------------------------------------
</code></pre>
<p>Ist es sinnvoll oder nicht ? Habe es mit 3 Clients getestet und habe immer einen anderen Client disconnected und habe soweit noch keine Fehler gefunden.<br />
Bin euch wie immer für jeden Beitrag sehr sehr dankbar <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/597654</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/597654</guid><dc:creator><![CDATA[Zero01]]></dc:creator><pubDate>Thu, 02 Sep 2004 10:31:03 GMT</pubDate></item><item><title><![CDATA[Reply to Multi Session Chat on Thu, 02 Sep 2004 10:48:38 GMT]]></title><description><![CDATA[<p>Solange du keine Features wie private Chats benötigst reicht das völlig aus.<br />
Ansonsten brauchst du halt eine Benutzerverwaltung. Im einfachsten Fall wäre das eine Liste, in die du beim OnConnect den Nickname und den Index der Verbindung im Connections-Array einträgst.<br />
Im OnDisconnect löschst du den entsprechenden Eintrag und passt ggf. die Index-Nummern der verbleibenden Verbindungen an. Wenn die siebente von zehn Verbindungen getrennt wird dann rutschen die letzten drei Verbindungen im Array eins nach unten, dem musst du in deiner Liste Rechnung tragen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/597678</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/597678</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Thu, 02 Sep 2004 10:48:38 GMT</pubDate></item><item><title><![CDATA[Reply to Multi Session Chat on Thu, 02 Sep 2004 11:56:32 GMT]]></title><description><![CDATA[<p>Vielen Dank Jansen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>die Benutzerverwaltung wäre der nächste Schritt gewesen. Ich arbeite mal deine Erklärung durch.</p>
<p>Gruss David</p>
]]></description><link>https://www.c-plusplus.net/forum/post/597763</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/597763</guid><dc:creator><![CDATA[Zero01]]></dc:creator><pubDate>Thu, 02 Sep 2004 11:56:32 GMT</pubDate></item><item><title><![CDATA[Reply to Multi Session Chat on Fri, 03 Sep 2004 09:00:55 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>mit</p>
<pre><code class="language-cpp">if(ServerSocket1-&gt;Socket-&gt;Connections[i]-&gt;Connected) {...}
</code></pre>
<p>[cpp]</p>
<p>kannst du vor dem Senden jeweils prüfen, ob die Gegenstelle noch vorhanden ist...</p>
<p>Gruß<br />
Timmy</p>
]]></description><link>https://www.c-plusplus.net/forum/post/598551</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/598551</guid><dc:creator><![CDATA[SuperNinny]]></dc:creator><pubDate>Fri, 03 Sep 2004 09:00:55 GMT</pubDate></item><item><title><![CDATA[Reply to Multi Session Chat on Fri, 03 Sep 2004 13:18:03 GMT]]></title><description><![CDATA[<p>Thx ! sieht mit deinem beispiel in kombination wesentlich sauberer aus und man riskiert kein &quot;Index out of bound(x)&quot;<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>Gruss David</p>
]]></description><link>https://www.c-plusplus.net/forum/post/598822</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/598822</guid><dc:creator><![CDATA[Zero01]]></dc:creator><pubDate>Fri, 03 Sep 2004 13:18:03 GMT</pubDate></item></channel></rss>