Russian Qt Forum
Ноябрь 23, 2024, 18:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО]Проблема с MaxPendingConnections  (Прочитано 3836 раз)
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!");
    }

}
« Последнее редактирование: Февраль 19, 2012, 19:04 от lolbla2 » Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #1 : Февраль 09, 2012, 21:27 »

MaxPendingConnections - это максимальное количество подключаемых соединения, уже подключённые соединения (те которые вы забрали через nextPendingConnection) на это ограничение никак не сказываются.
Записан
andrew.k
Гость
« Ответ #2 : Февраль 09, 2012, 23:01 »

интересно, зачем такой странный кейз?
Записан
lolbla2
Гость
« Ответ #3 : Февраль 12, 2012, 19:29 »

интересно, зачем такой странный кейз?

Хочу ограничить число возможных клиентов до 2-х
Записан
lolbla2
Гость
« Ответ #4 : Февраль 12, 2012, 19:34 »

MaxPendingConnections - это максимальное количество подключаемых соединения, уже подключённые соединения (те которые вы забрали через nextPendingConnection) на это ограничение никак не сказываются.

Я что-то не очень понял тебя. То есть MaxPendingConnections - это те, которые одновременно пытаются подключиться? К примеру 2 человека нажали кнопку коннект, вот значит они одновременно вдвоём пытаются подключиться на это что ли влияет ограничение? А то есть если у меня 3 человека одновременно захотят подрубиться, то подрубятся только 2, а подключение 3-го будет отвергнуто сервером? Значит третьему надо подождать пока эти 2 подрубятся тогда он сможет подключиться? Это имелось в виду что ли?
Записан
mutineer
Гость
« Ответ #5 : Февраль 12, 2012, 19:38 »

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

MaxPendingConnections - это максимальное количество подключений, которые ожидают обработки при помощи nextPendingConnection(). То есть к тебе подключилось два клиента. Все, пока ты не обработаешь одного через nextPendingConnection(), другие подключиться не смогут

спасибо понял теперь что такое MaxPendingConnections
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.046 секунд. Запросов: 22.