Здравствуйт! Как правильнее обходить следующую ошибку:
Разрабатывают клиент-серверное приложение
При определенных условиях клиент отправляет серверу сначала заголовок с размером следующего сообщения и прочей информацией, а затем отправляет данные для записи в БД
Кое-как кодится сервак, на самом деле, слишком много подводных камней
Сейчас, например, долго не мог понять, почему код перестал работать, а я лишь закоментил print(data) на сервере между sock.recv(title) и sock.recv(size), ибо закоментив строку у меня в первом чтение данных приходит сообщение типа: "size{message}" вместо просто size. Но если раскоментить print, сервер получает какую-то задержку и читает отдельно сообщения
Уже слишком часто бьюсь об проблему, что сервер читает больше или меньше данных, чем должен, поэтому решил обратиться сюда за помощью в решение. Как правильнее строить взаимодействие?
Достаточно написать рабочий код.
Еще полезно почитать документацию.
Применив свой опыт телепат, я могу сказать, что вы вероятно не смотрели документацию по sock.recv . А вот что вы и как шлете, вообще загадка, вы бы привели код клиента и сервера, а заодно описание протокола общения. Еще можете поискать примеры на github.
Напротив, точно неуверен. К этому моменту не возвращался, все заработало и был рад, сейчас увидел, исправлю. Тем не мене, я в поисках объяснений на другой вопрос, понимаю, что считывая кб с потока я получу гораздо больше, чем ожидаю, но ищу я решение в общем виде, как избежать проблемы, что данные мешаются? Только строгим отслеживанием размеров входящих и исходящих данных?
Опишите свой протокол, что бы можно было различить один пакет от другого и следуя своему протоколу (поверх tcp) обрабптыаайте входящие данные. recv точно можно оставить 1 на все и пускать его в цикле.