Перед киданием текста в файл надобно обязательно обнулять, ибо recv этого не делает. Код (Text): string message = "GET / HTTP/1.0\r\nHost:" + domain + " \r\n\r\n\r\n"; //запрос формируется нормально pthread_mutex_lock(&mutex); //мьютексы от отчаяния включены, помоему они здесь не в кассу. char text[1500]; //буфер для приема char * request = &message[0]; //тк send берет char* перевод сообщения. //cout<<request<<endl; //для проверки send(sock, request, strlen(request), 0); //посылаем запрос int nsize; string page; nsize = recv(sock, text, sizeof(text) - 1, 0); //получаем первую часть text[nsize] = 0; page = page + text; if (check_page(page)) //проверка кода ответа (200 300 301) { domain = create_folder(domain); //создается чтото типа файловой базы данных char * ch; domain += "index.html"; ch=&domain[0]; ofstream out(ch, ios::out); //поток ввода в файл out << text; //кидаем первую часть в файл text[0] = 0; while (nsize = recv(sock, text, sizeof(text) - 1, 0))) //получаем ответ и сохраняем его пока не получим 0 от сервера { text[nsize] = 0; out << text; } close(sock); pthread_mutex_unlock (&mutex); }