Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML 2.0] Dołączanie do czatu podczas jego działania.

Ostatnio zmodyfikowano 2013-08-27 21:51
Autor Wiadomość
ShockwaverPL
Temat założony przez niniejszego użytkownika
[SFML 2.0] Dołączanie do czatu podczas jego działania.
» 2013-08-27 20:11:08
Witam. Uczę sie programować w c++ SFML 2.0 i napotkałem problem przy użyciu sfml_network.
Zrobiłem prosty czat i serwer dopiero odpala pętle while, gdy połączy się z oboma klientami.
Moje pytanie brzmi czy można zrobić, aby można było dołączyć do serwera podczas jego działania?
Czyli żeby działał zanim się połączy z nim jakiś klient, i żeby klient mógł się połączyć w każdej chwili.

Z góry dziękuję za odpowiedź.

P-91066
RazzorFlame
» 2013-08-27 21:02:46
Wszystko sie da tylko trzeba pomyśleć... Zrób sobie klase serwera która posiada vector z WSKAŹNIKAMI na DYNAMICZNIE utworzone połączenia (clienty) a później je dołącza w pętli. Np tak (zakładając że klasa ClientConnection ma odpowiednie zaimplementowane funkcje):
C/C++
class Server
{
public:
    std::vector < ClientConnection *> m_Clients;
    void addClient( ClientConnection * con )
    {
        m_Clients.push_back( con );
    }
};

//i pętla głowna (zakładając że obiekt "server" to obiekt klasy Server

sf::TcpListener listener; //to zapewne masz u siebie

while(...)
{
    ClientConnection * con = new ClientConnection;
    sf::Socket::Status state = listener.accept( con->getConnection() );
    if( state == sf::Socket::Done )
    {
        server.addClient( con );
    }
    else
    {
        delete con; //<--- nie zapomnij o tym, inaczej server będzie sie mulil totalnie
    }
    //itd...itd
}
P-91076
ShockwaverPL
Temat założony przez niniejszego użytkownika
» 2013-08-27 21:51:24
Bardzo ci dziękuję. Wszystko ładnie chodzi i nie było żadnych problemów. Po prostu nie pomyślał bym o tym ponieważ dopiero zaczynam programowanie. Wielkie dzięki :).
P-91080
« 1 »
  Strona 1 z 1