Bool connect() { bool result = false;

QEventLoop loop;
QObject::connect(m_socket, &QAbstractSocket::connected, this, [&]() {
setState(Interface::State::Run);
loop.quit();
result = true;
});
QObject::connect(m_socket, &QAbstractSocket::errorOccurred, this, [&]() {
loop.quit();
result = false;
});
m_socket->connectToHost(m_settings.ip, m_settings.port, QIODevice::ReadWrite, QAbstractSocket::IPv4Protocol);
loop.exec();
return result;
}

Уважаемые знатоки, добрый день! Можно ли дождаться от сокета состояния подключения более лаконично, без захвата в лямбду локальных переменных? 🧐 В члены класса их выносить особо не хочется. m_socket - инстанс QTcpSocket

8 ответов

25 просмотров

Сделать все асинхронно. Будет лаконично

тебе синхронно надо?

vladd12- Автор вопроса
Angry Subst
тебе синхронно надо?

По-хорошему да, надо сразу понимать, удалось подключиться, или нет

socket->connectToHost(...); quint64 now=QDateTime::currentMsecsFromEpoch(); while (socket->state() == QAbstractSocket::ConnectingState && QDateTime::currentMsecsFromEpoch() - now < TIMEOUT) { QThread::msleep(10); qApp->processEvents(); } if (socket->state()==QAbstractSocket::ConnectedState) ... else ... примерно так, там уж сам пофантазируй дальше

vladd12
По-хорошему да, надо сразу понимать, удалось подкл...

Есть готовый метод https://doc.qt.io/qt-6/qabstractsocket.html#waitForConnected

socket->connectToHost(...); if(!socket->waitForConnected(20000)) // 20 секунд { qCritical() << "error connect:" << socket->error() << socket->errorString() << socket->state(); return false; } // connect ok ... return true

vladd12- Автор вопроса
Mr.Mait
Есть готовый метод https://doc.qt.io/qt-6/qabstrac...

О, не увидел. Спасибо большое!

Похожие вопросы

Обсуждают сегодня

Я колись ставив гуглу антиспам 3.0, може і норм, але мені не дуже зайшло. Теж думав тиждень, що його і куди. Зупинився на трех варіантах відразу всі три і включив 1. Перевір...
𝓔𝓾𝓰𝓮𝓷𝓮𝓥 J
2
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Всем привет, может уже кто-то пытался выдернуть из api информацию о дате рождения пользователя Есть ли вообще такая возможность?
Artem Stormageddon
2
Приветствую всех, возникла проблема, до этого писал бота в простом формате где при выполнении условий приходило через send_message информация, сейчас решил добавить хендлер на...
Andrew
4
Портфолио: Зовут меня Александр, мне 41 год. Город Киров. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github.co...
Magic
11
Можно ли отследить отправление местоположения именно по кнопке, чтобы 100% отправлялось текущее, а не любое выбранное?
Lencore
2
где собака, админ группы? нычкуется и боится проявить волю, в толерантность еще не наигрался? @yelizariev
Ognezar
61
Приветствую всех, есть вопросик. Передали проект на OctoberCms, без инсталяшки в полуразвернутом виде, нужно было залить бекап бд, после залития бд, оказалось, что части строк...
Лео
14
Ребят, привет. У кого-то есть опыт заказа мерча в сторе? Есть успешные кейсы? Чёт у меня турецкую карту не принимает
Vladimir F.
7
Не пофиг ли на аккаунт 12 летнего человека? Что там может быть важного?
Stargrapefruit
2
Карта сайта