TCP простой, немного сложнее UDP. Проблема в том, что его отлаживать надо намного дольше чем UDP (только сравните заголовки TCP и UDP!).
Да, с CRC бывает больше всего проблем.

Так что советую найти где-нибудь калькулятор, который бы считал CRC, а Вы бы сранивали его с тем, что выдает ваша функция.