Ok, I was just checking that you had implemented it without threads first and only start using threads as a last resort.
Well, you should not access the socket from two threads. So it would make most sense to handle the signals of the socket in the same thread as the socket.
Either by having the receiver on the same thread or by forcing a direct call using Qt::DirectConnection as the connection type.
Currently you have the receiver on the main thread and are using the default connection type (Qt::AutoConnection) which results in the behavior of Qt::QueuedConnection (emitter thread and receiver owner thread different).
Cheers,
_
Bookmarks