Как вы ожидаете, что strcat
узнает, сколько байтов добавляется в буфер?
valread = read(fd, temp_buffer, BUFFER_SIZE);
strcat(buffer, temp_buffer);
После вызова read
, valread
содержит количество прочитанных вами байтов, и это единственное, что содержит эту информацию. Однако вы пытаетесь добавить данные, считанные в существующий буфер, без использования этого значения - поэтому невозможно, чтобы strcat
мог знать, сколько байтов добавить в буфер. Неудивительно, что вы добавляете ненужную информацию, которую читали раньше.
Подобная проблема здесь:
read(fd, buffer, BUFFER_SIZE);
// Keep Reading If Entire Message Not Recieved
int buffer_len = strlen(buffer);
Здесь вы игнорируете возвращаемое значение read
, поэтому у вас нет возможности узнать, сколько байтов вы прочитали. Как вы ожидаете, что strlen
выяснит, сколько байтов read
помещено в буфер?