Проблема заключается в том, что buffer
не гарантированно содержит нулевой символ, заканчивающий строку. Добавьте строку buffer[BUFSIZE-1] = '\0'
непосредственно перед вашим cout << buffer
.
Еще лучше, фактически записывайте, сколько байтов было получено, и используйте эту информацию, чтобы определить, перегрузили ли вы свой буфер.