TCP-Server - zarządzanie socketami

0

Witam, mam dylemat odnośnie zarządzania połączeniami client-server.
Chodzi głównie o to, że po połączeniu się z serwerem tworzę sobie takie "pseudo-pokoje", które dobierają clientów w pary.
Niestety na chwilę obecną kod napisałem tak, że przy dołączeniu trzeciego klienta, SID sesji zostaje rozesłany po wszystkich clientach.

Bardzo proszę o podpowiedź, nakierowanie jak zarządzać połączeniami, aby wiadomość była wysyłana, tylko w odpowiednie miejsce?

Połączenie przychodzące:

void ServerInstance::incomingConnection(int handle)
{
    ReportClock::getCurrentDateTime();
    qDebug() << __FUNCTION__ << "L: " << __LINE__ << "Incoming Connection...";

    Client *client = new Client(this);
    client->SetSocket(handle);

    connect(client,SIGNAL(newPlayer(int,int)),this,SLOT(createNewGameRoom(int,int)));
    connect(this,&ServerInstance::waitingForSecondPlayer,client,&Client::sendAnswer);
}

Wysyłanie odpowiedzi:

void ServerInstance::_waitingForSecondPlayer(int indexFromGameRoomVect)
{
    QJsonObject _obj;
    _obj["Unique_SessionKey"] = gameRooms[indexFromGameRoomVect]->getKeySession();
    _obj["Order"] = int(ServerClientMessages::WaitForSecondPlayer);
    QJsonDocument _doc;
    _doc.setObject(_obj);
    emit waitingForSecondPlayer(_doc);
}

void Client::SetSocket(int Descriptor)
{
    socket = new QTcpSocket(this);

    connect(socket,SIGNAL(connected()),this,SLOT(connected()));
    connect(socket,SIGNAL(disconnected()),this,SLOT(disconnected()));
    connect(socket,SIGNAL(readyRead()),this,SLOT(readyRead()));

    socket->setSocketDescriptor(Descriptor);

    qDebug() << "Client connected";

}

void Client::sendAnswer(QJsonDocument &document)
{
    QByteArray buffer;
    buffer = document.toBinaryData();
    socket->write(buffer);
}

Update:
Teraz mi jeszcze przyszło do głowy, aby ten Descriptor dać jako argument do wysyłania, wtedy powinien odezwać się tylko ten jeden, konkretny, socket?

1

Poradziłem sobie, rozwiązanie przyszło na podstawie tego: how-to-send-messages-to-connected-clients-from-server-in-qt

1 użytkowników online, w tym zalogowanych: 0, gości: 1