QTcpSocket.connectToHost () занимает слишком много времени

Это мой код для связи с пользовательским TcpServer. В результате connectiontoHost () завершается за 13,5 секунд (несколько раз за 2,5 секунды).
Подключение к локальному серверу очень быстрое.
Тот же код с удаленным сервером, но на Qt5.7 работает очень быстро.

bool cuTcpSocketIOInterface::pInitialize()
{
QTcpSocket* tSocket = new QTcpSocket(this);
QElapsedTimer timer;
timer.start();
if (!isSocketReady()){
qDebug()<<"connectToHost" <<address()<<port()<<", Time:"<<timer.elapsed();
tSocket->connectToHost(address(), port());
}
qDebug()<<"Done:"<<timer.elapsed();
tSocket->waitForConnected(100);
return tSocket->state() == QAbstractSocket::ConnectedState;
}

И затем вывод этой функции в std :: out с удаленным сервером:

connectToHost QHostAddress("192.168.255.193") 9876 , Time: 0
Done: 13581

Связь с пользовательским локальным сервером

connectToHost QHostAddress("127.0.0.1") 9876 , Time: 0
Done: 5

Пинг до моего удаленного сервера очень хорошо (менее 1 мс). Соединение с замазкой происходит очень быстро.

Обновить
Итак, я пытаюсь работать с Qt5.7 и Qt 5.9.1. И я получаю следующие результаты:
Мой код:

#include <QCoreApplication>
#include <QDebug>
#include <QTcpSocket>
#include <QElapsedTimer>

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
qDebug()<<"START TEST!!!";
QElapsedTimer timer;
timer.start();

QTcpSocket socket;
socket.connectToHost(TcpIpAddress,80);
qDebug()<<"connectToHost Done:"<<timer.elapsed();

return a.exec();
}

На Qt 5.7.1:

START TEST!!!
connectionToHost Done:7

На Qt 5.9:

START TEST!!!
connectionToHost Done:2572

Похоже, это оправдание BugReport?

Обновить: на Qt 5.10.1

START TEST!!!
connectionToHost Done:2574

0

Решение

Решение:
Необходимо настроить прокси перед подключением к серверу:
socket.setProxy(QNetworkProxy::NoProxy)

0

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

Других решений пока нет …

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