если файл небольшой, то можно и socket->write(file.readAll());
если гигабайты, то либо свой протокол, разбивая по кускам размером в N мегабайт, тогда и прогресс будет на обоих концах
можно посмотреть как делают передачу такие программы как scp
можно торрент, но затык в начале будет, но удобно когда надо раздать 2м и более
А вот я в начале привел пример поблочной передачи.
Так норм или нет?