Многопоточный TCP client (QThread и QTcpSocket)

Здравствуйте! Новая проблема в моём проекте. Опять не знаю как быть!!!

Интересная вещь получилась: при этом моём работающем многопоточном

клиенте (4.8 Linux), если взять и резко отключить службу протокола TCP,

то всё как-бы виснет - я даже не знаю где сигнал сокета не отрабатывает,

или слот не выводит в консоль сообщение об ошибке, в остальном - норма.

C++ (Qt)Выделить код

1
2
3

// стандартный набор ошибок отрабатывается правильно
connect (Socket, SIGNAL(error(QAbstractSocket::SocketError)),this, SLOT(prsl_SocketError(QAbstractSocket::SocketError))
// сообщение об ошибке появляется не сразу а после перезапуска службы!

А затем если снова включить службу, то появляется сообщение об ошибке

и проект реконнектится и снова работает как надо, но ведь время утеряно!

Вот и в следствии всего вышенаписанного , у меня появляются вопросы по

QTcpSocket или вообще по сокетам. В чём же разница между этими вещами:

Socket->close(); и Socket->disconnectFromHost(); и как мне нужно правильно

использовать waitForDisconnected() - каким образом подобрать этот интервал?

Спасибо!