Multi user chat mit Sockets



  • Hallo

    Nun ja einen normalen chat habe ich hin bekommen! nur leider habe ich jetzt das problem das ich kein Multiuser chat hin bekomme. Soll heißen das ich nur 2 Rechner miteinander kommunizieren lassen kann aber keinen dritten oder mehr dazu schalten kann 😞 Weiß einer wie das ungefähr geht? Bin sicher net der erste der das Problem hat 🙂



  • Du mußt in OnAccept() auf Serverseite bei einer eingehenden Verbindung doch einen neues CAsyncSocket Object beim Aufruf von Accept() des Listensocket übergeben.

    Diesen Socket den mußt Du nur Dynamisch erzeugen, oder eine festgelegte Anzahl in deiner Klasse definieren.

    Also so in etwa:

    *.h
    class ....
    {
        CXXXSocket m_ListenSocket; // wird zum Listen der eingehenden Verbindung verwendet
        int m_NextSocket; //im Constructor auf 0 setzen zeigt den nächsten feien Socket an
        CXXXSocket m_ConnectSocket[20]; //20 Verbindungssockets
    }
    
    *.cpp
    {
        void CXXXClass::OnAccept()
        {
            if(m_NextSocket < 20)
                m_ListenSocket.Accept(m_ConnectSocket[m_NextSocket++]);
            //bei 20 Angemeldeten Clienten:
            //besser ist hier den Listensocket zu schließen und wenn sich einer Abmeldet den wieder zu öffnen und lauschen zu lassen
        }
    }
    

    Vergiss nicht bei Close m_NextSocket wieder zu verringern, also wenn sich ein Client Abmeldet.

    So sollte es gehen, das ganze geht auch mit dyn. Erzeugten Sockets dann mußt das nur umstellen.

    Gruß Matthias



  • hui is aber kompliziert.

    Poblem ist ja dann nur das ich in meinem ganzen chat programam for schleifen einbauen muss damit da sganze array auch durchlaufen wird. Oder sehe ich das falsch?



  • bittttttttttttte helft mir ⚠ :xmas1:

    :xmas2:



  • Frickel doch solange rum bis es funktioniert.


Anmelden zum Antworten