Я пишу протокол для передачи гигабайт данных по сети с использованием TCP, чтобы попытаться немного научиться программированию на протоколах. Я не уверен, как разработать этот протокол передачи, чтобы передавать данные самым быстрым и эффективным способом.
Я использую Qt в Windows.
На данный момент мой дизайн протокола моего приложения (часть для передачи данных) выглядит следующим образом:
- Сначала снимите данные для входа.
- Запишите первый пакет данных (в сокет) размером 4 килобайта, а затем дождитесь, пока сервер подтвердит, что он получил пакет.
- Когда сервер подтвердит получение пакета данных (записав int "1"), запишите следующие 4 килобайта.
- Когда все данные будут переданы, отправьте md5-сумму данных, переданных на сервер.
- Если сервер снова подтверждает с помощью int 8, передача данных завершается.
На данный момент я не могу получить скорость выше 166 КБ / сек на том же компьютере при передаче через 127.0.0.1. Я пытался прочитать другие конструкции протоколов, но почти нет документации по протоколам передачи данных, которую можно было бы написать для их приложения.
Неправильно ли оформлен протокол, который я опубликовал, или есть какие-то серьезные проблемы? Должен ли протокол ждать подтверждения каждого пакета сервером или я должен записывать его непрерывно?