
17.06.2010, 13:33
|
|
Участник форума
Регистрация: 07.01.2009
Сообщений: 237
С нами:
9126697
Репутация:
97
|
|
Сообщение от mailbrush
Код:
recv(s, response, 1024, 0);
Этим кодом я получаю 1024 байта и записываю их в response.
Как получить абсолютно всю информацию, предварительно не зная сколько байтов, и записать все это в один массив символов?
Код:
do
{
iResult = recv(s, response, 1024, 0);
}
while(iResult > 0);
Этим кодом получается вся информация, но проблема в том, что в response оказываются последние 1024 байта, что очевидно. Необходимо как-то создать буфер неизвестной длины, и в цикле делать конкатенацию буфера вместе с полученной инфой, но как?
Еще как вариант - создать динамический массив, и в цикле расширять его размер, опять вопрос - как?
Спасибо заранее.
Храни строки в списке, а не в массиве. Например, принимаешь по 1024 символа.
Собственно список - это и есть какое-то подобие динамического массива.
Тогда кодишь так:
Код:
struct info
{
info * next; // Указатель на след. элемент
info * prev; // и на предыдущий
char data[1024];
} node;
...
recv(s, node.data, 1024, 0);
/*
В классе хранишь указатели на первую принятую строку. Далее раотаешь с объектом.
*/
...
Далее можно написать класс, реализующий линейный двусвязный список, нафигачить ему конструкторы копирования всякие, перегрузку выражений и т.д.
|
|
|