Прямо сейчас у меня есть инфраструктура связи, состоящая из клиента и сервера.
Клиент подключается к серверу с помощью стандартных сокетов TCP.
У меня есть структура сообщения, которая выглядит следующим образом:
4 bytes -- Message size
n bytes -- Message
4 bytes -- CRC32 checksum
Одно из требований заключается в том, что для того, чтобы сообщение было действительным, оно должно пройти проверку CRC32 на другом конце соединения, либо клиент, либо сервер обрабатывают сообщения таким же образом.
Если сообщение не проходит проверку CRC32, соединение разрывается и устанавливается новое соединение.
Мой вопрос: почему, черт возьми, я получаю случайные сбои CRC32?
Без видимой причины,даже если клиент и сервер находятся на одном компьютере с использованием петлевого адреса (127.0.0.1).
Я подумал, что даже если я запрограммировал отказоустойчивый на случай злонамеренной третьей стороны или чего-то такого, я бы никогда не увиделсоединение, которое будет разорвано во время моих тестов.