Невозможно использовать любой базовый пример клиента QWebSocket

Я не могу использовать ни один из примеров клиентов QWebSockets, перечисленных здесь:
http://qt-project.org/doc/qt-5/qtwebsockets-examples.html
Приложение пытается открыть локальный URL, сокет застревает в QAbstractSocket :: ConnectingState и

QDebug () << m_webSocket.error ();

возвращает QAbstractSocket :: UnknownSocketError. Конечно, «подключенный» сигнал никогда не излучается.
У меня QT 5.3 в OSX-льве. У меня есть OpenSSL 1.0.1i и

QSslSocket :: supportSsl ();

возвращает истину.

У меня действительно нет идей, так что если вы заболели, будьте очень благодарны.

Спасибо заранее.

1

Решение

Во-первых, я не думаю, что ssl является проблемой в этом случае.

Я просто запустил примеры, и все работало нормально. Это означает, что может быть одна из следующих общих проблем (или могут быть другие, о которых я не знаю).

  • Локальный порт с номером 1234 используется другим процессом. Что означает, попробуйте редактирование EchoClient client(QUrl(QStringLiteral("ws://localhost:1234"))); и заменить 1234 с номером как 8888 или же 9001 и т. д. должен решить проблему. Обратите внимание, что в этом случае вы должны изменить порт в клиентской и серверной программе. (Прочитайте следующий пункт, чтобы полностью понять, если вы не понимаете, о чем я говорю.)
  • Запустите клиентскую программу во время работы соответствующей серверной программы. Например, когда вы работаете echoclient, вы должны держать echoserver Бег. Если вы находитесь в Windows или Linux, вы можете сделать это, открыв два процесса Qt Creator и запустив echoserver сначала, а потом echoclient, Если вы работаете в Mac, вы не можете создать два экземпляра Qt Creator (по крайней мере, в Yosemite я не знаю об osx lion). Вы должны запустить echoserver (и не закрывайте консоль), затем откройте echoclient проект и установить echoclient как активный проект и запустить.

  • (хотя вряд ли) если вы открываете проект, копируете файлы cpp с веб-сайта и вставляете его в свой проект, а затем компилируете (вместо того, чтобы загружать его с вкладки «Примеры» вашего Qt Creator), то у вас может отсутствовать конфигурация файла .pro. Просто добавь websockets с QT += core в .pro файл проекта.

Если это не так, вы можете сообщить мне об этом и попробовать опубликовать в Форум Qt тоже в таком случае.

2

Другие решения

Вот пример кода, работающего для меня:

CSocketClient : public QWebSocket
{
Q_OBJECT
public:
CSocketClient();

protected slots:
void SL_Connected();
void SL_Disconnected();
};CSocketClient::CSocketClient() : QWebSocket("MyApplication")
{
connect(this, &QWebSocket::connected, this, &OSocketWebGenogramClient::SL_Connected);
connect(this, &QWebSocket::disconnected, this, &CSocketClient::SL_Disconnected);
open(QUrl("ws://localhost:45002"));
}

void
CSocketClient::SL_Connected()
{
qDebug() << "Connected to server on port" << localPort();
}

void
CSocketClient::SL_Disconnected()
{
}
1

По вопросам рекламы [email protected]