QTcpSocket::write() — как гарантировать пересылку данных одним пакетом?
Никак. TCP — это поток данных, он не разбивается на сообщения. Когда нужны оные, передают сначала длину, потом тело каждого очередного сообщения.
Никак. Есть такая штука, называется MTU . Пакет не может быть больше MTU в принципе (обычно это около полутора килобайт).
Вам в любом случае нужен протокол верхнего уровня, чтобы общаться сообщениями а не потоком (в принципе можно конечно скобочки считать, но это не решение). Часто между сообщениями бросают строку, которая гарантированно не может попасть в данных или передают перед сообщением размер.
Кпк начинающему я бы порекомендовал qtWebsocket.