send(Socket, (char *) completePacket, 100, 0);
Хорошо, но вы должны всегда проверять возвращаемое значение. send может на самом деле отправлять меньше, чем вы говорите (маловероятно, что это проблема, когда вы отправили всего 300 байт.)
Вам не нужно очищать сокет.
Может проблема в приемнике? Помните, что TCP предоставляет поток, а не пакеты или сообщения. Для одного вызова может потребоваться несколько вызовов recv, чтобы получить их все. И данные, отправленные несколькими вызовами отправки, могут быть получены только за один вызов recv. Вы должны отслеживать, сколько данных вы получили.
Если вы хотите проверить, какие данные передаются по сети, установите сетевой монитор, например Wireshark.