Well, it seems that timeout() signal is triggered too early, and if you transfer large files, they won't be send in 500ms through the network !

What you could do, is connect your server to readyRead() signal, and just send a special ending message with your sender socket, to notify server that file is transferred.