Russian Qt Forum

Qt => Работа с сетью => Тема начата: lolbla2 от Февраль 09, 2012, 19:54



Название: [РЕШЕНО]Проблема с MaxPendingConnections
Отправлено: lolbla2 от Февраль 09, 2012, 19:54
ставлю максимальное количество подключившихся 2, но всё равно больше 2 может подключиться почему-то :

Код:
server->setMaxPendingConnections(2);

вот код на подключение клиента
Код:
void Widget::OnClientConnected()
{
    players++;
    QMessageBox::information(this,"connection!","client connected!");
    switch(players)
    {
    case 1:
        socket1 = server->nextPendingConnection();
        connect(socket1, SIGNAL(readyRead()), this, SLOT(OnReceiveData()));
        connect(socket1, SIGNAL(disconnected()), this, SLOT(OnClientDisconnected()));
        this->listWidget->addItem(socket1->peerAddress().toString()+":"+QString::number(socket1->peerPort()) );
        break;
    case 2:
        socket2 = server->nextPendingConnection();
        connect(socket2, SIGNAL(readyRead()), this, SLOT(OnReceiveData()));
        connect(socket2, SIGNAL(disconnected()), this, SLOT(OnClientDisconnected()));
        this->listWidget->addItem(socket2->peerAddress().toString()+":"+QString::number(socket2->peerPort()) );
        break;
    default:
//        server->nextPendingConnection()->abort(); // с этим вроде работает, но прочему maxPendingConnection не ограничивает не пойму
        players--;
        QMessageBox::information(this,"disconection!","client disconected because already 2 players!");
    }

}


Название: Re: Проблема с MaxPendingConnections
Отправлено: LisandreL от Февраль 09, 2012, 21:27
MaxPendingConnections - это максимальное количество подключаемых соединения, уже подключённые соединения (те которые вы забрали через nextPendingConnection) на это ограничение никак не сказываются.


Название: Re: Проблема с MaxPendingConnections
Отправлено: andrew.k от Февраль 09, 2012, 23:01
интересно, зачем такой странный кейз?


Название: Re: Проблема с MaxPendingConnections
Отправлено: lolbla2 от Февраль 12, 2012, 19:29
интересно, зачем такой странный кейз?

Хочу ограничить число возможных клиентов до 2-х


Название: Re: Проблема с MaxPendingConnections
Отправлено: lolbla2 от Февраль 12, 2012, 19:34
MaxPendingConnections - это максимальное количество подключаемых соединения, уже подключённые соединения (те которые вы забрали через nextPendingConnection) на это ограничение никак не сказываются.

Я что-то не очень понял тебя. То есть MaxPendingConnections - это те, которые одновременно пытаются подключиться? К примеру 2 человека нажали кнопку коннект, вот значит они одновременно вдвоём пытаются подключиться на это что ли влияет ограничение? А то есть если у меня 3 человека одновременно захотят подрубиться, то подрубятся только 2, а подключение 3-го будет отвергнуто сервером? Значит третьему надо подождать пока эти 2 подрубятся тогда он сможет подключиться? Это имелось в виду что ли?


Название: Re: Проблема с MaxPendingConnections
Отправлено: mutineer от Февраль 12, 2012, 19:38
MaxPendingConnections - это максимальное количество подключений, которые ожидают обработки при помощи nextPendingConnection(). То есть к тебе подключилось два клиента. Все, пока ты не обработаешь одного через nextPendingConnection(), другие подключиться не смогут


Название: Re: Проблема с MaxPendingConnections
Отправлено: lolbla2 от Февраль 14, 2012, 18:47
MaxPendingConnections - это максимальное количество подключений, которые ожидают обработки при помощи nextPendingConnection(). То есть к тебе подключилось два клиента. Все, пока ты не обработаешь одного через nextPendingConnection(), другие подключиться не смогут

спасибо понял теперь что такое MaxPendingConnections